thanos-io/thanos · error

finalize

Error message

finalize

What it means

Wraps merr.Err in streamedBlockWriter.Close after index, chunk, and meta files were written: one or more of the accumulated writer Close() calls failed, so although the block looks complete on disk it cannot be trusted and finalization is reported as failed.

Solutions

  1. Inspect the wrapped MultiError to find which closer (index/chunks/meta) failed.
  2. Check disk space and file descriptors for the block directory.
  3. Delete the partial block and re-run downsampling.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/compact/downsample/streamed_block_writer.go:173 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/dad7bfa7df465d84. Report an issue: GitHub.

Appendix: source

Thrown at pkg/compact/downsample/streamed_block_writer.go:173

		return merr.Err()
	}

	// Finalize saves prepared index and metadata to corresponding files.

	for _, cl := range w.closers {
		merr.Add(cl.Close())
	}

	if err := w.writeMetaFile(); err != nil {
		return errors.Wrap(err, "write meta meta")
	}

	if err := w.syncDir(); err != nil {
		return errors.Wrap(err, "sync blockDir")
	}

	if err := merr.Err(); err != nil {
		return errors.Wrap(err, "finalize")
	}

	// No error, claim success.

	level.Info(w.logger).Log(
		"msg", "finalized downsampled block",
		"mint", w.meta.MinTime,
		"maxt", w.meta.MaxTime,
		"ulid", w.meta.ULID,
		"resolution", w.meta.Thanos.Downsample.Resolution,
	)
	return nil
}

// syncDir syncs blockDir on disk.
func (w *streamedBlockWriter) syncDir() (err error) {
	df, err := fileutil.OpenDir(w.blockDir)
	if err != nil {

View on GitHub (pinned to 35b8b99117)