istio/istio · error

config dump has no configuration type %s

Error message

config dump has no configuration type %s

What it means

getSection scans a config dump's top-level Configs array for an entry whose TypeUrl matches the requested section (bootstrap, clusters, listeners, routes, dynamic_parameters, ecds, etc.). This error means no entry with that TypeURL exists in the dump, so the requested proxy-config section cannot be shown.

Source

Thrown at istioctl/pkg/util/configdump/util.go:45

	bootstrap configTypeURL = "type.googleapis.com/envoy.admin.v3.BootstrapConfigDump"
	listeners configTypeURL = "type.googleapis.com/envoy.admin.v3.ListenersConfigDump"
	endpoints configTypeURL = "type.googleapis.com/envoy.admin.v3.EndpointsConfigDump"
	clusters  configTypeURL = "type.googleapis.com/envoy.admin.v3.ClustersConfigDump"
	routes    configTypeURL = "type.googleapis.com/envoy.admin.v3.RoutesConfigDump"
	secrets   configTypeURL = "type.googleapis.com/envoy.admin.v3.SecretsConfigDump"
	ecds      configTypeURL = "type.googleapis.com/envoy.admin.v3.EcdsConfigDump"
)

// getSection takes a TypeURL and returns the types.Any from the config dump corresponding to that URL
func (w *Wrapper) getSection(sectionTypeURL configTypeURL) (*anypb.Any, error) {
	var dumpAny *anypb.Any
	for _, conf := range w.Configs {
		if conf.TypeUrl == string(sectionTypeURL) {
			dumpAny = conf
		}
	}
	if dumpAny == nil {
		return nil, fmt.Errorf("config dump has no configuration type %s", sectionTypeURL)
	}

	return dumpAny, nil
}

func (w *Wrapper) getSections(sectionTypeURL configTypeURL) ([]*anypb.Any, error) {
	var dumpAny []*anypb.Any
	for _, conf := range w.Configs {
		if conf.TypeUrl == string(sectionTypeURL) {
			dumpAny = append(dumpAny, conf)
		}
	}
	if dumpAny == nil {
		return nil, fmt.Errorf("config dump has no configuration type %s", sectionTypeURL)
	}

	return dumpAny, nil
}

View on GitHub (pinned to 8dc789c5cf)

Solutions

  1. Check what sections exist: `istioctl proxy-config all <pod>` or inspect the dump's top-level typeUrls.
  2. Use a section the proxy actually has (bootstrap/clusters/listeners/routes are near-universal; ecds is not).
  3. Recollect the dump without filters if it was captured from a file with a subset.
Defensive patterns

Strategy: validation

Validate before calling

// Check available sections before requesting one
func hasSection(w *configdump.Wrapper, url configTypeURL) bool {
    for _, c := range w.Configs {
        if c.TypeUrl == string(url) { return true }
    }
    return false
}

Try / catch

if _, err := w.GetEcdsConfigDump(); err != nil {
    if strings.Contains(err.Error(), "has no configuration type") {
        // proxy simply has no such section; not an error condition
        return nil
    }
    return err
}

Prevention

When it happens

Trigger: Calling a Wrapper method like GetBootstrapConfigDump/GetClustersConfigDump/GetListenersConfigDump on a dump that lacks that section — e.g. an Envoy that has no ECDS config, or a dump collected with include_edd/section filters that omitted it.

Common situations: `istioctl proxy-config ecds <pod>` on an Envoy without extension config sections; version skew where the proxy does not emit a section; partial dumps captured from file.

Related errors


AI-assisted analysis of istio/istio@8dc789c5cf (2026-08-15). Data as JSON: /api/errors/6ae975afed38d182. Report an issue: GitHub.