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

  1. Use one of the supported PanelType constants exactly
  2. Check the server version's v3.go for the accepted enum values
  3. 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

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


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