Per-folder event subscriptions deliver a moved alarm's events to the old owner during the authority/rebuild window #826

Closed
opened 2026-11-11 00:05:59 -05:00 by dohertj2 · 1 comment
Owner

Residual from #808 (review finding 5). Server-object (i=2253) delivery is decided per condition and is strict, but MonitoredItems on an equipment folder receive events via SDK notifiers without a per-event ACL check, so after a deploy moves an alarm (or equipment) the old folder's subscribers still get its events (incl. EventId) until the rebuild lands — indefinitely after a failed apply. Commands are denied. Same for a native alarm still wired to a folder after a not-yet-applied surgical reference removal.

Minor related edge (narrows only): an Area named exactly like an equipment's opaque id makes that equipment's reference variables lose their Tag-grant match.

Residual from #808 (review finding 5). Server-object (i=2253) delivery is decided per condition and is strict, but MonitoredItems on an equipment folder receive events via SDK notifiers without a per-event ACL check, so after a deploy moves an alarm (or equipment) the old folder's subscribers still get its events (incl. EventId) until the rebuild lands — indefinitely after a failed apply. Commands are denied. Same for a native alarm still wired to a folder after a not-yet-applied surgical reference removal. Minor related edge (narrows only): an Area named exactly like an equipment's opaque id makes that equipment's reference variables lose their Tag-grant match.
dohertj2 added the type:bugpriority:p3 labels 2026-11-11 00:05:59 -05:00
Author
Owner

Fixed (commits 8e1e73f9, 489664d1). Pushed to master in d1b6cad2. Folder event items decide per event on the live condition instance; a reference removal/move invalidates the folder's verdict cache (via the SDK's private MonitoredNode2.InvalidatePermissionCaches, guarded by a test). Live gate: with ACL on, A's folder received only A's alarm; after the reference removal events stopped. Residuals tracked in #838.

Fixed (commits `8e1e73f9`, `489664d1`). Pushed to master in `d1b6cad2`. Folder event items decide per event on the live condition instance; a reference removal/move invalidates the folder's verdict cache (via the SDK's private `MonitoredNode2.InvalidatePermissionCaches`, guarded by a test). Live gate: with ACL on, A's folder received only A's alarm; after the reference removal events stopped. Residuals tracked in #838.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#826