fix(service): tolerate concurrent pending-to-uploading status race in UploadChunk

When multiple chunk uploads race on the pending→uploading transition, ignore ErrRecordNotFound from UpdateSessionStatus since another request already completed the update.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-15 10:27:12 +08:00
parent d9a60c3511
commit 79870333cb

View File

@@ -190,9 +190,11 @@ func (s *UploadService) UploadChunk(ctx context.Context, sessionID int64, chunkI
if session.Status == "pending" { if session.Status == "pending" {
if err := s.uploadStore.UpdateSessionStatus(ctx, sessionID, "uploading"); err != nil { if err := s.uploadStore.UpdateSessionStatus(ctx, sessionID, "uploading"); err != nil {
if !errors.Is(err, gorm.ErrRecordNotFound) {
return fmt.Errorf("update status to uploading: %w", err) return fmt.Errorf("update status to uploading: %w", err)
} }
} }
}
return nil return nil
} }