argoproj/argo-workflows · error

internal error creating metric instrument of unknown type %v

Error message

internal error creating metric instrument of unknown type %v

What it means

CreateInstrument's switch on instrument type fell through to default: an instrument was requested with an otel instrument kind this build does not know how to create. Barring version skew, this is an internal programming error — the enum is closed and all cases should be handled.

Source

Thrown at util/telemetry/instrument.go:128

		)
		instPtr = &inst
		err = insterr
	case Int64UpDownCounter:
		inst, insterr := (*m.otelMeter).Int64UpDownCounter(name,
			metric.WithDescription(desc),
			metric.WithUnit(unit),
		)
		instPtr = &inst
		err = insterr
	case Int64Counter:
		inst, insterr := (*m.otelMeter).Int64Counter(name,
			metric.WithDescription(desc),
			metric.WithUnit(unit),
		)
		instPtr = &inst
		err = insterr
	default:
		return fmt.Errorf("internal error creating metric instrument of unknown type %v", instType)
	}
	if err != nil {
		return err
	}
	m.AddInstrument(name, &Instrument{
		name:        name,
		description: desc,
		otel:        instPtr,
	})
	return nil
}

func (m *Metrics) buckets(name string, defaultBuckets []float64) []float64 {
	if opts, ok := m.config.Modifiers[name]; ok {
		if len(opts.HistogramBuckets) > 0 {
			buckets := opts.HistogramBuckets
			sort.Float64s(buckets)
			return buckets

View on GitHub (pinned to 35bff19146)

Solutions

  1. Ensure the InstrumentType passed matches a supported otel instrument kind
  2. Update argo-workflows if a stale binary is mixed with newer instrumentation code
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at util/telemetry/instrument.go:128 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03). Data as JSON: /api/errors/4f45d04b68610acf. Report an issue: GitHub.