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
- Pass a bytes.Reader or ensure the ReadSeeker supports Seek to the start
- 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.