SigNoz/signoz · error

internal

internal

Error message

failed to get traces keys

What it means

getTracesKeys extracts materialised field keys by parsing the traces index table's CREATE statement; this error is returned when ExtractFieldKeysFromTblStatement fails to parse the SHOW CREATE TABLE output (error 722 already covers the DB select itself). It is an internal error wrapping the parse failure with 'failed to get traces keys'.

Source

Thrown at pkg/telemetrymetadata/metadata.go:144

}

// tracesTblStatementToFieldKeys returns materialised attribute/resource/scope keys from the traces table.
func (t *telemetryMetaStore) tracesTblStatementToFieldKeys(ctx context.Context) ([]*telemetrytypes.TelemetryFieldKey, error) {
	ctx = ctxtypes.NewContextWithCommentVals(ctx, map[string]string{
		instrumentationtypes.TelemetrySignal:  telemetrytypes.SignalTraces.StringValue(),
		instrumentationtypes.CodeNamespace:    "metadata",
		instrumentationtypes.CodeFunctionName: "tracesTblStatementToFieldKeys",
	})
	query := fmt.Sprintf("SHOW CREATE TABLE %s.%s", t.tracesDBName, t.indexV3TblName)
	statements := []telemetrytypes.ShowCreateTableStatement{}
	err := t.telemetrystore.ClickhouseDB().Select(ctx, &statements, query)
	if err != nil {
		return nil, errors.Wrap(err, errors.TypeInternal, errors.CodeInternal, ErrFailedToGetTblStatement.Error())
	}

	materialisedKeys, err := ExtractFieldKeysFromTblStatement(statements[0].Statement)
	if err != nil {
		return nil, errors.Wrap(err, errors.TypeInternal, errors.CodeInternal, ErrFailedToGetTracesKeys.Error())
	}

	for idx := range materialisedKeys {
		materialisedKeys[idx].Signal = telemetrytypes.SignalTraces
	}

	return materialisedKeys, nil
}

// getTracesKeys returns the keys from the spans that match the field selection criteria.
func (t *telemetryMetaStore) getTracesKeys(ctx context.Context, fieldKeySelectors []*telemetrytypes.FieldKeySelector) ([]*telemetrytypes.TelemetryFieldKey, bool, error) {
	ctx = ctxtypes.NewContextWithCommentVals(ctx, map[string]string{
		instrumentationtypes.TelemetrySignal:  telemetrytypes.SignalTraces.StringValue(),
		instrumentationtypes.CodeNamespace:    "metadata",
		instrumentationtypes.CodeFunctionName: "getTracesKeys",
	})

	if len(fieldKeySelectors) == 0 {

View on GitHub (pinned to 5069bf80b0)

Solutions

  1. Check the wrapped error for the exact parse failure line/column in the DDL
  2. Inspect SHOW CREATE TABLE <tracesDB>.<indexV3TblName> manually and compare against expected schema
  3. Upgrade the SigNoq schema (migrations) so the table matches the version the parser expects
  4. Report/patch ExtractFieldKeysFromTblStatement if the DDL uses unsupported syntax
Defensive patterns

Strategy: fallback

Try / catch

if err != nil {
    if e, ok := err.(*errors.Error); ok && e.Code == errors.CodeInternal {
        // fall back to a static key set or cached keys
        return cachedKeys, nil
    }
    return nil, err
}

Prevention

When it happens

Trigger: Running GetKeys/GetKeysMulti for SignalTraces when the parsed CREATE TABLE DDL of the index_v3 table contains constructs the extractor cannot handle, or the statement blob is empty/malformed.

Common situations: Upgrading ClickHouse to a version that emits new column DDL syntax, a drifted or manually modified index_v3 table schema, or a SigNoq schema migration that outpaced the parser.

Related errors


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