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
- Check the wrapped error for the exact parse failure line/column in the DDL
- Inspect SHOW CREATE TABLE <tracesDB>.<indexV3TblName> manually and compare against expected schema
- Upgrade the SigNoq schema (migrations) so the table matches the version the parser expects
- 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
- Keep app and ClickHouse schema versions aligned via migrations
- Cache previously extracted materialised keys as a fallback
- Monitor for parse failures after ClickHouse upgrades
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
- error in processing sql query
- error in reading data
- encountered multiple errors: %s
- errors.CodeInternal
- CodeLicenseUnavailable
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/58e06470f428ebf7.
Report an issue: GitHub.