vectordotdev/vector · error

valid metadata key

Error message

valid metadata key

What it means

`log_schema().metadata_key()` returns an Option; when `reroute_dropped` is enabled, remap annotates dropped events under the global metadata key, and the schema for that annotation is built with `expect("valid metadata key")` at src/transforms/remap.rs:364 for the Legacy namespace. A global `log_schema` whose `metadata_key` is unset or unparseable makes this panic while constructing the transform's type definition.

Source

Thrown at src/transforms/remap.rs:364

                        // currently only event paths are supported
                        new_type_def = new_type_def.with_meaning(path, &id);
                    }
                    new_type_def
                })
                .unwrap_or_else(|_| {
                    Definition::new_with_default_metadata(
                        // The program failed to compile, so it can "never" return a value
                        Kind::never(),
                        input_definition.log_namespaces().clone(),
                    )
                });

            // When a message is dropped and re-routed, we keep the original event, but also annotate
            // it with additional metadata.
            let dropped_definition = Definition::combine_log_namespaces(
                input_definition.log_namespaces(),
                input_definition.clone().with_event_field(
                    log_schema().metadata_key().expect("valid metadata key"),
                    Kind::object(BTreeMap::from([
                        ("reason".into(), Kind::bytes()),
                        ("message".into(), Kind::bytes()),
                        ("component_id".into(), Kind::bytes()),
                        ("component_type".into(), Kind::bytes()),
                        ("component_kind".into(), Kind::bytes()),
                    ])),
                    Some("metadata"),
                ),
                input_definition
                    .clone()
                    .with_metadata_field(&owned_value_path!("reason"), Kind::bytes(), None)
                    .with_metadata_field(&owned_value_path!("message"), Kind::bytes(), None)
                    .with_metadata_field(&owned_value_path!("component_id"), Kind::bytes(), None)
                    .with_metadata_field(&owned_value_path!("component_type"), Kind::bytes(), None)
                    .with_metadata_field(&owned_value_path!("component_kind"), Kind::bytes(), None),
            );

View on GitHub (pinned to 99894c8d88)

Solutions

  1. Set a valid `log_schema.metadata_key` (default `metadata`) or remove the partial override
  2. Validate the full config with `vector validate` before deploying
  3. If embedding: propagate a configuration error instead of expect when metadata_key is absent

Example fix

# before
log_schema:
  message_key: message
  # metadata_key missing or blank, with reroute_dropped = true in remap
# after
log_schema:
  message_key: message
  metadata_key: metadata
Defensive patterns

Strategy: validation

Validate before calling

# shell: reroute_dropped remaps need a valid metadata_key
vector validate /etc/vector/vector.yaml --no-environment
grep -A6 '^log_schema:' /etc/vector/vector.yaml | grep metadata_key

Prevention

When it happens

Trigger: A remap transform configured with `reroute_dropped = true` running under a global `log_schema:` block that lacks a valid `metadata_key` (missing, empty, or invalid path expression).

Common situations: Custom log_schema blocks that override only some keys and blank or typo `metadata_key`; configs migrated between Vector versions where the metadata key semantics changed.

Related errors


AI-assisted analysis of vectordotdev/vector@99894c8d88 (2026-08-20). Data as JSON: /api/errors/b1a7768c00514595. Report an issue: GitHub.