sensor-logs: joined multiline syslog record fails to re-parse (dropped) #584
Labels
No labels
area:frontend
area:gui
area:transfer
area:zenoh
breaking-change
bug
correlation
deployment
documentation
duplicate
enhancement
good first issue
help wanted
invalid
keyspace-v2
netring-0.27
netring-0.28
netring-0.29
nlink-0.24
performance
priority:p0
priority:p1
priority:p2
prototype
question
redesign
rerun
research
security
sensor:logs
sensor:netlink
sensor:netring
sensor:parallax
sensor:snmp
sensor:sysinfo
sensor:systemd
v3-roadmap
wave:0
wave:1
wave:2
wave:3
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
marcpardo/zensight#584
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the #548 integration harness (epic #542).
Problem
MultilineJoinerfolds a head line + indented continuations into one raw string with embedded\ns, thenhandle_stream_connectionpasses that joined string toparser::parse(receiver.rsprocess_record). But the RFC 3164 and simple-PRI regexes end with(.*)$—.doesn't match newline and$(non-multiline) won't match with content after the first line's newline — so a joined record like:fails all three patterns and is dropped (counted as parse_failed). So multiline stack traces arriving over a syslog stream (TCP/Unix,
<PRI>-prefixed) are lost — exactly the caseMultilineJoinerexists to handle.Note: the joiner's folding is unit-tested (
multiline.rs), and the file source (#549, plain-line format) won't hit this. The gap is specifically PRI-framed multiline over the stream listeners.Fix options
messagefield verbatim. This is the RFC-agnostic correct behavior and keeps the envelope from the head line.Acceptance
<PRI>-framed head + indented continuation over a TCP/Unix listener arrives as oneLogRecordwhose message contains all folded lines and whose severity/host/app come from the head.multiline_idle_flush_*currently only asserts a single buffered line, with a comment pointing here).