kubernetes/kops · error

error seeking to start of data stream for %s: %v

Error message

error seeking to start of data stream for %s: %v

What it means

Returned inside SwiftPath.WriteFile's retry loop when the caller-supplied io.ReadSeeker cannot be rewound to offset 0 before upload. The stream itself is faulty — already consumed and unseekable, or wrapped by a failing reader — so the object bytes cannot be staged for the Swift create call; this is a local data-stream error, not a Swift API error.

Source

Thrown at util/pkg/vfs/swiftfs.go:394

	args = append(args, relativePath...)
	joined := path.Join(args...)
	return &SwiftPath{
		vfsContext: p.vfsContext,
		bucket:     p.bucket,
		key:        joined,
	}
}

func (p *SwiftPath) WriteFile(ctx context.Context, data io.ReadSeeker, acl ACL) error {
	done, err := RetryWithBackoff(swiftWriteBackoff, func() (bool, error) {
		client, err := p.getClient(ctx)
		if err != nil {
			return false, err
		}

		klog.V(4).Infof("Writing file %q", p)
		if _, err := data.Seek(0, 0); err != nil {
			return false, fmt.Errorf("error seeking to start of data stream for %s: %v", p, err)
		}

		createOpts := swiftobject.CreateOpts{Content: data}
		if _, err := swiftobject.Create(ctx, client, p.bucket, p.key, createOpts).Extract(); err != nil {
			return false, fmt.Errorf("error writing %s: %v", p, err)
		}

		return true, nil
	})
	if err != nil {
		return err
	} else if done {
		return nil
	} else {
		// Shouldn't happen - we always return a non-nil error with false.
		return wait.ErrWaitTimeout
	}
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Pass a bytes.Reader or ensure the ReadSeeker supports Seek to the start
  2. Re-create the data stream if it was consumed by an earlier attempt (e.g. a previous retry in the backoff loop)
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at util/pkg/vfs/swiftfs.go:394 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/2533ac1cf8233802. Report an issue: GitHub.