thanos-io/thanos · error
remove existing file
Error message
remove existing file
What it means
Wraps os.RemoveAll in newPartFile: a pre-existing part file at the target path could not be deleted before recreating it (permissions or filesystem error). Leftover files from a previous partial run are the usual cause.
Solutions
- Check for processes holding the old part file open
- Fix permissions on the temp dir
- Remove the stale file manually if safe
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/block/indexheader/parallel_bucket.go:170 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of thanos-io/thanos@35b8b99117 (2026-09-07).
Data as JSON: /api/errors/33173d130b338566.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/block/indexheader/parallel_bucket.go:170
func newPartFile(filename string) (*partFile, error) {
dir := filepath.Dir(filename)
df, err := fileutil.OpenDir(dir)
if os.IsNotExist(err) {
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
return nil, errors.Wrap(err, "create temp dir")
}
df, err = fileutil.OpenDir(dir)
}
if err != nil {
return nil, errors.Wrap(err, "open temp dir")
}
if err := df.Sync(); err != nil {
return nil, errors.Wrap(err, "sync dir")
}
if err := os.RemoveAll(filename); err != nil {
return nil, errors.Wrap(err, "remove existing file")
}
f, err := os.OpenFile(filepath.Clean(filename), os.O_CREATE|os.O_RDWR, 0600)
if err != nil {
return nil, errors.Wrap(err, "open temp file")
}
return &partFile{
file: f,
fileWriter: bufio.NewWriterSize(f, 32*1024),
fileReader: bufio.NewReaderSize(f, 32*1024),
}, nil
}
func (p *partFile) Close() error {
if err := p.file.Close(); err != nil {
return err
}
return os.Remove(p.file.Name())
}View on GitHub (pinned to 35b8b99117)