Scope upload idempotency by token

This commit is contained in:
2026-06-08 04:34:29 +00:00
parent 9d4694c6d8
commit 1c5d7198e3
2 changed files with 101 additions and 3 deletions

View File

@@ -116,6 +116,7 @@ type uploadJob struct {
}
type uploadIdempotencyScope struct {
TokenID string
PipelineID string
Key string
}
@@ -201,7 +202,7 @@ func (coordinator *UploadCoordinator) Submit(ctx context.Context, request Upload
if err := ingest.ValidateContentType(request.ContentType); err != nil {
return UploadRunRecord{}, err
}
scope, hasKey := uploadRequestIdempotencyScope(pipeline.ID, request.IdempotencyKey)
scope, hasKey := uploadRequestIdempotencyScope(request.TokenID, pipeline.ID, request.IdempotencyKey)
coordinator.mu.Lock()
coordinator.expireLocked(coordinator.now().UTC())
@@ -287,11 +288,11 @@ func (coordinator *UploadCoordinator) Submit(ctx context.Context, request Upload
return record, nil
}
func uploadRequestIdempotencyScope(pipelineID, key string) (uploadIdempotencyScope, bool) {
func uploadRequestIdempotencyScope(tokenID, pipelineID, key string) (uploadIdempotencyScope, bool) {
if key == "" {
return uploadIdempotencyScope{}, false
}
return uploadIdempotencyScope{PipelineID: pipelineID, Key: key}, true
return uploadIdempotencyScope{TokenID: tokenID, PipelineID: pipelineID, Key: key}, true
}
func (coordinator *UploadCoordinator) Status(runID UploadRunID) (UploadRunRecord, bool) {