thanos-io/thanos · error

create data dir in

Error message

create data dir in %v

What it means

Wraps an os.MkdirAll failure while creating the receive local storage directory (conf.dataDir). It fires when the path is not creatable — insufficient permissions, a file occupying the path, or a read-only filesystem — preventing TSDB from storing ingested data.

Solutions

  1. Check directory permissions and ownership
  2. Ensure the parent path exists and is writable
  3. Verify disk space and that the path is not a regular file
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at cmd/thanos/receive.go:212 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/08b95aa69373f77c. Report an issue: GitHub.

Appendix: source

Thrown at cmd/thanos/receive.go:212

	upload := len(confContentYaml) > 0
	if enableIngestion {
		if upload {
			// The background shipper continuously scans the data directory and uploads
			// new blocks to object storage service.
			bkt, err = client.NewBucket(logger, confContentYaml, comp.String(), nil)
			if err != nil {
				return err
			}
			bkt = objstoretracing.WrapWithTraces(objstore.WrapWithMetrics(bkt, extprom.WrapRegistererWithPrefix("thanos_", reg), bkt.Name()))
		} else {
			level.Info(logger).Log("msg", "no supported bucket was configured, uploads will be disabled")
		}
	}

	var dataDir *os.Root
	if enableIngestion {
		if err := os.MkdirAll(conf.dataDir, 0o755); err != nil {
			return errors.Wrapf(err, "create data dir in %v", conf.dataDir)
		}

		dataDir, err = os.OpenRoot(conf.dataDir)
		if err != nil {
			return errors.Wrap(err, "open storage dir")
		}

		// Create TSDB for the default tenant.
		if err := createDefautTenantTSDB(logger, conf.defaultTenantID, dataDir); err != nil {
			return errors.Wrapf(err, "create default tenant tsdb in %v", conf.dataDir)
		}
	}

	relabelConfig, err := conf.relabelCfg.RelabelConfig(nil)
	if err != nil {
		return errors.Wrap(err, "get relabel configuration")
	}

View on GitHub (pinned to 35b8b99117)