vectordotdev/vector · error

transform output misconfigured

Error message

transform output misconfigured

What it means

In `expanded_definitions` (src/topology/schema.rs:186), after matching a transform output to the requested port, `.expect("transform output misconfigured")` fires when no output port matches. The comment notes this is a fatal misconfiguration that other parts of the topology builder normally catch earlier; reaching this expect means those earlier validations were bypassed.

Solutions

  1. Check the sink/consumer input references an output port the transform actually defines; fix the port name or add the named output.
  2. Run `vector validate` on the config before testing so the topology builder's own misconfiguration error surfaces instead of this panic.
  3. If using multiple outputs, declare them (e.g. route/remap named outputs) so every referenced port exists.

Example fix

// before (my_transform has no named output "foo")
sinks:
  my_sink:
    inputs:
      - my_transform.foo

// after: use the default output or define the named output
sinks:
  my_sink:
    inputs:
      - my_transform
Defensive patterns

Strategy: validation

Validate before calling

// verify every referenced named output port exists on the producing transform
for input in sink.inputs {
    if let Some(port) = &input.port {
        assert!(transform_defines_output(&config, &input.component, port), "unknown output port {port}");
    }
}

Prevention

When it happens

Trigger: A sink (or consumer) references a transform's named output port that the transform does not define — e.g. `sink.inputs = [{"my_transform": "remap"}]` where `my_transform` only emits the default port — reached via validate_sink_expectations or test_expanded_definition without a prior topology build check.

Common situations: Typos in named output ports in the config; using `remap` outputs (`route`-style named outputs) on a transform that doesn't produce them; running `vector test`/`vector validate` against hand-edited configs.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of vectordotdev/vector@bdb87aeaa4 (2026-09-16). Data as JSON: /api/errors/cca60335979fce54. Report an issue: GitHub.

Appendix: source

Thrown at src/topology/schema.rs:186

                .expect("already found inputs")
                .iter()
                .find_map(|output| {
                    if output.port == input.port {
                        Some(
                            input.with_definitions(
                                output
                                    .schema_definitions(config.schema_enabled())
                                    .values()
                                    .cloned(),
                            ),
                        )
                    } else {
                        None
                    }
                })
                // If we find no match, it means the topology is misconfigured. This is a fatal
                // error, but other parts of the topology builder deal with this state.
                .expect("transform output misconfigured");

            if contains_never(&transform_definition) {
                return Err(Error::ContainsNever);
            }

            // Append whatever number of additional pipelines we created to the existing
            // pipeline definitions.
            definitions.append(&mut transform_definition);
        }
    }

    cache.insert(
        (config.schema_enabled(), inputs.to_vec()),
        definitions.clone(),
    );

    Ok(definitions)
}

View on GitHub (pinned to bdb87aeaa4)