thanos-io/thanos · error
create temp dir
Error message
create temp dir
What it means
Wraps os.MkdirAll in newPartFile: the parent directory for an index-header part file does not exist and could not be created (permissions, read-only filesystem). This is the fallback branch taken when fileutil.OpenDir reported IsNotExist; part caching to temp files cannot proceed.
Solutions
- Check permissions on the temp directory path
- Free disk space if full
- Ensure the path is not a regular file
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/block/indexheader/parallel_bucket.go:157 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/a8481169c3f14e1f.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/block/indexheader/parallel_bucket.go:157
type Part interface {
Read(buf []byte) (int, error)
Write(buf []byte) (int, error)
Flush() error
}
// partFile stores parts in temporary files.
type partFile struct {
file *os.File
fileWriter *bufio.Writer
fileReader *bufio.Reader
}
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")
}View on GitHub (pinned to 35b8b99117)