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
- Set a valid `log_schema.metadata_key` (default `metadata`) or remove the partial override
- Validate the full config with `vector validate` before deploying
- 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
- Set metadata_key explicitly whenever log_schema is overridden and reroute_dropped is used
- Validate configs with `vector validate` before deploying reroute_dropped pipelines
- Prefer the default `metadata` key unless something else consumes it
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
- valid message key
- global log_schema.message_key to be valid path
- valid host key
- registered log schema required
- valid message key
AI-assisted analysis of vectordotdev/vector@99894c8d88 (2026-08-20).
Data as JSON: /api/errors/b1a7768c00514595.
Report an issue: GitHub.