thanos-io/thanos · error

open temp file

Error message

open temp file

What it means

Wraps os.OpenFile in newPartFile when creating the part file for writing (O_CREATE|O_RDWR). It fires on permission or path problems after the old file was removed; without the part file the index-header part cannot be written or later read back.

Solutions

  1. Check disk space and inode availability
  2. Verify write permissions on the temp dir
  3. Ensure the path is valid and not locked
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/block/indexheader/parallel_bucket.go:174 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/4f80d442c80f04b1. Report an issue: GitHub.

Appendix: source

Thrown at pkg/block/indexheader/parallel_bucket.go:174

		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())
}

func (p *partFile) Flush() error {
	if err := p.fileWriter.Flush(); err != nil {
		return err

View on GitHub (pinned to 35b8b99117)