SigNoz/signoz · error
panel type is invalid: %w
Error message
panel type is invalid: %w
What it means
Thrown by CompositeQuery.Validate when the panel type string is not one of the recognized PanelType values (e.g. "graph", "value", "table", "list", "trace"). The %w wraps PanelType.Validate's 'invalid panel type' error.
Source
Thrown at pkg/query-service/model/v3/v3.go:642
if c.QueryType == QueryTypeClickHouseSQL {
for name, query := range c.ClickHouseQueries {
if err := query.Validate(); err != nil {
return fmt.Errorf("clickhouse query %s is invalid: %w", name, err)
}
}
}
if c.QueryType == QueryTypePromQL {
for name, query := range c.PromQueries {
if err := query.Validate(); err != nil {
return fmt.Errorf("prom query %s is invalid: %w", name, err)
}
}
}
if err := c.PanelType.Validate(); err != nil {
return fmt.Errorf("panel type is invalid: %w", err)
}
if err := c.QueryType.Validate(); err != nil {
return fmt.Errorf("query type is invalid: %w", err)
}
return nil
}
type Temporality string
const (
Unspecified Temporality = "Unspecified"
Delta Temporality = "Delta"
Cumulative Temporality = "Cumulative"
)
func (t *Temporality) Scan(src interface{}) error {View on GitHub (pinned to 5069bf80b0)
Solutions
- Use one of the supported PanelType constants exactly
- Check the server version's v3.go for the accepted enum values
- Upgrade the query service if the client sends a newer panel type
Example fix
// before
{"panelType":"timeseries"}
// after
{"panelType":"graph"} Defensive patterns
Strategy: type-guard
Validate before calling
var validPanels = map[v3.PanelType]bool{v3.PanelTypeGraph:true, v3.PanelTypeValue:true, v3.PanelTypeTable:true, v3.PanelTypeList:true, v3.PanelTypeTrace:true}
if !validPanels[c.PanelType] { return errors.New("unsupported panel type") } Type guard
func isValidPanelType(p v3.PanelType) bool { switch p { case v3.PanelTypeGraph, v3.PanelTypeValue, v3.PanelTypeTable, v3.PanelTypeList, v3.PanelTypeTrace: return true }; return false } Prevention
- Pin client and server versions to the same enum set
- Use generated constants instead of string literals
When it happens
Trigger: Passing an unknown panel type like "timeseries" or "" in a composite query payload.
Common situations: Client UI version mismatch where new panel types aren't supported by an older query service, or typos in hand-built payloads.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- query type is invalid: %w
- invalid time aggregation: %s
- invalid space aggregation: %s
- invalid series aggregation: %s
- invalid function name: %s
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/45580fce85e7a8bf.
Report an issue: GitHub.