Skip to content

feat: name the subscriber (node + topic) in the UDS send-drop warning… - #18

Open
benaliabderrahmane wants to merge 1 commit into
mainfrom
fix/uds-drop-log-subscriber-name
Open

feat: name the subscriber (node + topic) in the UDS send-drop warning…#18
benaliabderrahmane wants to merge 1 commit into
mainfrom
fix/uds-drop-log-subscriber-name

Conversation

@benaliabderrahmane

Copy link
Copy Markdown
Owner

… and clarify the byte count

The drop warning printed only the peer's socket path and worded the message size as if it were the receive-buffer fill level ("recv buffer full (N bytes)"). Both made a slow-subscriber drop hard to diagnose: the path only encodes a PID, and the byte count looked like it contradicted the configured buffer size.

Now the ENOBUFS/EAGAIN branch names the offending subscriber by its fully-qualified node name and topic, states plainly that the number is the dropped message's size, and shows the configured recv-buffer size for reference.

The peer label is built once per graph change (make_peer_label) and stored in the copy-on-write subscriber cache alongside the socket path, so the publish/wait hot path still copies just a refcount and never formats a string. send_to takes an optional peer_label; the publisher and the rmw_wait TRANSIENT_LOCAL replay path supply it, request/response callers pass none and are unaffected.

… and clarify the byte count

The drop warning printed only the peer's socket path and worded the
message size as if it were the receive-buffer fill level
("recv buffer full (N bytes)"). Both made a slow-subscriber drop hard
to diagnose: the path only encodes a PID, and the byte count looked
like it contradicted the configured buffer size.

Now the ENOBUFS/EAGAIN branch names the offending subscriber by its
fully-qualified node name and topic, states plainly that the number is
the dropped message's size, and shows the configured recv-buffer size
for reference.

The peer label is built once per graph change (make_peer_label) and
stored in the copy-on-write subscriber cache alongside the socket path,
so the publish/wait hot path still copies just a refcount and never
formats a string. send_to takes an optional peer_label; the publisher
and the rmw_wait TRANSIENT_LOCAL replay path supply it, request/response
callers pass none and are unaffected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant