Location
src/adapt.rs — LinAdapter::subscribe's back-pressure handling, inside the spawned forwarding task.
Problem
When the adapter's internal channel is full, the BackPressurePolicy::DropOldest arm executes the exact same statement as the DropNewest arm — a plain let _ = tx.try_send(msg); — instead of first draining the oldest queued message to make room for the new one. As written, selecting DropOldest produces identical runtime behavior to DropNewest: the incoming message is simply dropped when the channel is full, and the queue is never evicted from the front. The policy is effectively a no-op distinct from DropNewest — anyone configuring DropOldest expecting newer frames to displace older ones gets the opposite behavior with no indication anything is wrong.
Suggested fix
Implement true oldest-eviction for the DropOldest arm (e.g., on try_send failure, pull one item off the receiving side and retry the send), or switch to a channel type that supports ring-buffer-style eviction. Add a test that asserts the oldest message is the one evicted under load, distinguishing it from the DropNewest behavior.
Filed from the 2026-07-29 ecosystem audit register; independently re-verified against current HEAD before filing.
Location
src/adapt.rs—LinAdapter::subscribe's back-pressure handling, inside the spawned forwarding task.Problem
When the adapter's internal channel is full, the
BackPressurePolicy::DropOldestarm executes the exact same statement as theDropNewestarm — a plainlet _ = tx.try_send(msg);— instead of first draining the oldest queued message to make room for the new one. As written, selectingDropOldestproduces identical runtime behavior toDropNewest: the incoming message is simply dropped when the channel is full, and the queue is never evicted from the front. The policy is effectively a no-op distinct fromDropNewest— anyone configuringDropOldestexpecting newer frames to displace older ones gets the opposite behavior with no indication anything is wrong.Suggested fix
Implement true oldest-eviction for the
DropOldestarm (e.g., ontry_sendfailure, pull one item off the receiving side and retry the send), or switch to a channel type that supports ring-buffer-style eviction. Add a test that asserts the oldest message is the one evicted under load, distinguishing it from theDropNewestbehavior.Filed from the 2026-07-29 ecosystem audit register; independently re-verified against current HEAD before filing.