{"record":{"id":"ed637ae141e59f9a","repo":"juicedata/juicefs","slug":"commit-upload-s-w","errorCode":null,"errorMessage":"commit upload %s: %w","messagePattern":"commit upload (.+?): %w","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/object/storj.go","lineNumber":172,"sourceCode":"\t\tif _, err := rs.Seek(startPos, io.SeekStart); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn s.putOnce(ctx, key, rs)\n\t})\n}\n\nfunc (s *storjClient) putOnce(ctx context.Context, key string, in io.Reader) error {\n\tupload, err := s.project.UploadObject(ctx, s.bucket, key, nil)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"begin upload %s: %w\", key, err)\n\t}\n\tif _, err = io.Copy(upload, in); err != nil {\n\t\t_ = upload.Abort()\n\t\treturn fmt.Errorf(\"upload %s: %w\", key, err)\n\t}\n\tif err = upload.Commit(); err != nil {\n\t\t_ = upload.Abort()\n\t\treturn fmt.Errorf(\"commit upload %s: %w\", key, err)\n\t}\n\treturn nil\n}\n\nfunc (s *storjClient) Copy(ctx context.Context, dst, src string) error {\n\treturn storjBackoff(ctx, func() error {\n\t\t_, err := s.project.CopyObject(ctx, s.bucket, src, s.bucket, dst, nil)\n\t\treturn err\n\t})\n}\n\nfunc (s *storjClient) Delete(ctx context.Context, key string, getters ...AttrGetter) error {\n\treturn storjBackoff(ctx, func() error {\n\t\t_, err := s.project.DeleteObject(ctx, s.bucket, key)\n\t\tif errors.Is(err, uplink.ErrObjectNotFound) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/object/storj.go#L154-L190","documentation":"The final Commit call on a Storj uplink upload failed after all data was streamed successfully, so the object was never sealed and upload.Abort is invoked. Fires when the satellite or storage nodes cannot finalize the object (segment confirmation failure, network loss after upload, expired access).","triggerScenarios":"Thrown at pkg/object/storj.go:172 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check network connectivity and Storj satellite status, then retry the upload from the start","Verify the access grant has write permission and has not expired for the target bucket","Enable uplink library logging to identify which segment or node failed during commit","Rely on the surrounding storjBackoff wrapper in Put to retry putOnce, which restarts the full upload"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}