#26391·vector

`abort "msg"` reason only preserved with explicit `reroute_dropped: true`

Author: 28515grajCreated Sep 15, 2026Updated Sep 16, 2026

Vector version: 0.58.0

Severity: Major (diagnostic info loss)

Description:

When a VRL program calls abort "diagnostic message", the message text is preserved in metadata.dropped.message only if reroute_dropped: true is set AND a sink subscribes to .dropped.

Source code (confirmed): src/transforms/remap.rs:395:

if self.reroute_dropped {
    vec![
        default_output,
        TransformOutput::new(...).with_port(DROPPED),
    ]
} else {
    vec![default_output]
}

If reroute_dropped is false, no output port for dropped events is created. The original event is silently discarded. Operators see only "Event mapping aborted." reason in internal logs but lose the abort message text.

Reproduction:

transforms:
  parse:
    type: remap
    inputs: [source]
    drop_on_abort: true
    # reroute_dropped NOT set
    source: |
      if !is_ipv4(string!(.col_ip)) {
        abort "col_ip invalid: " + string!(.col_ip)
      }

sinks:
  out:
    type: console
    inputs: [parse]

When col_ip = "garbage":

  • Event is dropped
  • Internal logs show only "Event mapping aborted."
  • The string "col_ip invalid: garbage" is lost (not in logs, not in sinks)

Vector runtime tests confirm:

  • Sink file: not created (no events reach it)
  • Log output: reason="Event mapping aborted." (no abort text)

Expected:

Abort messages should be preserved somewhere even without reroute_dropped. Options:

  • Emit WARN log on abort when reroute_dropped=false, including the abort message text
  • Document explicitly: "abort messages are lost without reroute_dropped: true"

Workaround:

Always set reroute_dropped: true and add a sink subscribed to .dropped:

transforms:
  parse:
    type: remap
    inputs: [source]
    drop_on_abort: true
    reroute_dropped: true  # explicit
    source: |
      if !is_ipv4(string!(.col_ip)) {
        abort "col_ip invalid: " + string!(.col_ip)
      }

sinks:
  out:
    type: console
    inputs: [parse]
  dl:
    type: file
    inputs: [parse.dropped]
    path: /tmp/dl.jsonl

Impact:

Production operators debugging aborted events have no diagnostic text beyond "abort" reason. Root cause investigation requires adding reroute_dropped: true to every transform in the pipeline, which is not enforced.

Confirmed in source: src/transforms/remap.rs:395 (Vector 0.58.0)