SigNoz/signoz · error · error

no index table supplied

Error message

no index table supplied

What it means

ErrNoIndexTable is a sentinel error returned (e.g. by GetServices) when the ClickHouse reader has no index table configured, so span/index-backed queries can't be executed.

Source

Thrown at pkg/query-service/app/clickhouseReader/reader.go:119

	signozTSTableNameV4Reduced = "distributed_time_series_v4_reduced"

	signozTableAttributesMetadata      = "distributed_attributes_metadata"
	signozLocalTableAttributesMetadata = "attributes_metadata"

	signozUpdatedMetricsMetadataLocalTable = "updated_metadata"
	signozUpdatedMetricsMetadataTable      = "distributed_updated_metadata"
	minTimespanForProgressiveSearch        = time.Hour
	minTimespanForProgressiveSearchMargin  = time.Minute
	maxProgressiveSteps                    = 4
	charset                                = "abcdefghijklmnopqrstuvwxyz" +
		"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	NANOSECOND = 1000000000
)

var (
	ErrNoOperationsTable            = errors.New("no operations table supplied")
	ErrNoIndexTable                 = errors.New("no index table supplied")
	ErrStartTimeRequired            = errors.New("start time is required for search queries")
	seededRand           *rand.Rand = rand.New(
		rand.NewSource(time.Now().UnixNano()))
)

// SpanWriter for reading spans from ClickHouse
type ClickHouseReader struct {
	db                      clickhouse.Conn
	prometheus              prometheus.Prometheus
	sqlDB                   sqlstore.SQLStore
	TraceDB                 string
	operationsTable         string
	durationTable           string
	indexTable              string
	errorTable              string
	usageExplorerTable      string
	SpansTable              string
	spanAttributeTableV2    string

View on GitHub (pinned to 5069bf80b0)

Solutions

  1. Configure the index table name (e.g. SIGNOZ_TRACE_INDEX env var / config field) for the query service
  2. Ensure the corresponding distributed table exists in ClickHouse (check schema migrations)
  3. Restart the query service after fixing config so the reader is rebuilt with the table name

Example fix

// before
SIGNOZ_TRACE_INDEX=""
// after
SIGNOZ_TRACE_INDEX="distributed_signoz_index_v2"
Defensive patterns

Strategy: validation

Validate before calling

if indexTable == "" {
    log.Fatal("index table must be configured (SIGNOZ_TRACE_INDEX)")
}
reader := NewClickHouseReader(conn, operationsTable, indexTable)

Try / catch

_, err := reader.GetServices(ctx, params)
if errors.Is(err, clickhouseReader.ErrNoIndexTable) {
    // fix env/config, verify table exists, restart
}

Prevention

When it happens

Trigger: Calling GetServices (or any index-table-dependent reader method) with an empty indexTable configuration on the ClickHouseReader.

Common situations: Deploying the query service without the SIGNOZ_TRACE_INDEX / index table env var; pointing at a ClickHouse cluster where the distributed index table wasn't created; upgrading to a version that renamed index tables.

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28). Data as JSON: /api/errors/e81f0fad6e4e2e6a. Report an issue: GitHub.