OPC UA ConditionRefresh on equipment/device folder subscriptions can still be followed by older deferred events #855

Closed
opened 2026-11-11 07:55:31 -05:00 by dohertj2 · 2 comments
Owner

Residual from #854. Server-object (i=2253) subscriptions are fixed (sequence cut + per-item replay, ConditionRefreshDeferralWireTests). Folder (notifier) subscriptions keep the old behaviour under overload: up to 4096 events already accepted by the SDK's MonitoredNode2 channel, and the SDK's per-(item, event type, source) verdict cache leaves no per-event, per-subscription decision point. Events stay in per-condition order with the newest last, so clients converge. Revisit if a folder-subscribing consumer is affected; options need SDK changes or our own per-item delivery for folder items. Documented in docs/security.md.

Residual from #854. Server-object (`i=2253`) subscriptions are fixed (sequence cut + per-item replay, `ConditionRefreshDeferralWireTests`). Folder (notifier) subscriptions keep the old behaviour under overload: up to 4096 events already accepted by the SDK's `MonitoredNode2` channel, and the SDK's per-(item, event type, source) verdict cache leaves no per-event, per-subscription decision point. Events stay in per-condition order with the newest last, so clients converge. Revisit if a folder-subscribing consumer is affected; options need SDK changes or our own per-item delivery for folder items. Documented in docs/security.md.
dohertj2 added the type:followuppriority:p3 labels 2026-11-11 07:55:31 -05:00
Author
Owner

Owner decision 2026-11-11: build per-item delivery for folder (notifier) event subscriptions, so that ConditionRefresh on folder items gets the same sequence-cut guarantee as the Server object. This is event-path work and needs repeated independent review.

Owner decision 2026-11-11: **build per-item delivery** for folder (notifier) event subscriptions, so that ConditionRefresh on folder items gets the same sequence-cut guarantee as the Server object. This is event-path work and needs repeated independent review.
Author
Owner

Done. Folder event items get per-item delivery with the same ConditionRefresh cut, per-event ACL and liveness checks as the Server object. Four review rounds. A shared per-report projection then brought the Lock hold at N=50 stalled items down to p50 81–181 µs (the first version measured 0.4–1.6 ms). The large-N / large-queue residual is #870. Pushed to master in e857135e..7a27ef1f; full suite green (20 projects, 0 failures, 0 warnings).

Done. Folder event items get per-item delivery with the same ConditionRefresh cut, per-event ACL and liveness checks as the Server object. Four review rounds. A shared per-report projection then brought the Lock hold at N=50 stalled items down to p50 81–181 µs (the first version measured 0.4–1.6 ms). The large-N / large-queue residual is #870. Pushed to master in `e857135e..7a27ef1f`; full suite green (20 projects, 0 failures, 0 warnings).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#855