juicedata/juicefs · error

commit upload %s: %w

Error message

commit upload %s: %w

What it means

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).

Source

Thrown at pkg/object/storj.go:172

		if _, err := rs.Seek(startPos, io.SeekStart); err != nil {
			return err
		}
		return s.putOnce(ctx, key, rs)
	})
}

func (s *storjClient) putOnce(ctx context.Context, key string, in io.Reader) error {
	upload, err := s.project.UploadObject(ctx, s.bucket, key, nil)
	if err != nil {
		return fmt.Errorf("begin upload %s: %w", key, err)
	}
	if _, err = io.Copy(upload, in); err != nil {
		_ = upload.Abort()
		return fmt.Errorf("upload %s: %w", key, err)
	}
	if err = upload.Commit(); err != nil {
		_ = upload.Abort()
		return fmt.Errorf("commit upload %s: %w", key, err)
	}
	return nil
}

func (s *storjClient) Copy(ctx context.Context, dst, src string) error {
	return storjBackoff(ctx, func() error {
		_, err := s.project.CopyObject(ctx, s.bucket, src, s.bucket, dst, nil)
		return err
	})
}

func (s *storjClient) Delete(ctx context.Context, key string, getters ...AttrGetter) error {
	return storjBackoff(ctx, func() error {
		_, err := s.project.DeleteObject(ctx, s.bucket, key)
		if errors.Is(err, uplink.ErrObjectNotFound) {
			return nil
		}
		return err

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Check network connectivity and Storj satellite status, then retry the upload from the start
  2. Verify the access grant has write permission and has not expired for the target bucket
  3. Enable uplink library logging to identify which segment or node failed during commit
  4. Rely on the surrounding storjBackoff wrapper in Put to retry putOnce, which restarts the full upload
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at pkg/object/storj.go:172 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/ed637ae141e59f9a. Report an issue: GitHub.