Alarms: residuals from the #587/#586 reviews #597

Closed
opened 2026-10-08 02:31:10 -04:00 by dohertj2 · 1 comment
Owner

#587 fixed one-event-per-method; its reviews recorded these as not done.
Sources: closing comments on #586/#587; src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/OtOpcUaNodeManager.cs:1291-1296,1555-1660; docs/AlarmTracking.md; docs/security.md.

  • Scripted TimedShelve's UnshelveTime reads ~24.8 days (MaxTimeShelved = int.MaxValue, shelvingTime 0) though the engine expires it on time — project the real remaining time
  • A re-ack carrying a comment writes the comment but reports no event
  • A native re-ack still sends a duplicate ack to the driver
  • AdminUI /alerts ack path has no test
  • Decide whether the documented native-ack flap on a Secondary (acked → unacked) should be refused/redirected rather than only documented
  • (low, #586) SDK EventsMonitored unit never reaches conditions materialised later under a subscribed folder — only costs an audit event while auditing is on

Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep.

#587 fixed one-event-per-method; its reviews recorded these as not done. Sources: closing comments on #586/#587; src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/OtOpcUaNodeManager.cs:1291-1296,1555-1660; docs/AlarmTracking.md; docs/security.md. - [ ] Scripted TimedShelve's `UnshelveTime` reads ~24.8 days (`MaxTimeShelved = int.MaxValue`, shelvingTime 0) though the engine expires it on time — project the real remaining time - [ ] A re-ack carrying a comment writes the comment but reports no event - [ ] A native re-ack still sends a duplicate ack to the driver - [ ] AdminUI `/alerts` ack path has no test - [ ] Decide whether the documented native-ack flap on a Secondary (acked → unacked) should be refused/redirected rather than only documented - [ ] (low, #586) SDK `EventsMonitored` unit never reaches conditions materialised later under a subscribed folder — only costs an audit event while auditing is on _Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep._
Author
Owner

Resolved on master (bd638106, 83e9ffd2; merges ca0f1e77 and b99aea46).

  • Scripted TimedShelve UnshelveTime: the requested duration is applied and the scripted projection carries UnshelveAtUtc, so UnshelveTime counts down to the real expiry instead of ~24.8 days. Review R1 follow-up: the SDK timed-unshelve timer is now a no-op because the engine owns expiry (otherwise both pair nodes routed a "system" Unshelve ahead of the engine's AutoUnshelve).
  • Re-ack with a comment: recorded as AddComment (durable, replicated) and reports one comment event; an uncommented re-ack stays a no-op (Part9StateMachineTests, ConditionMethodEventTests).
  • Native re-ack still reaching the driver: ruled deliberate (documented retry path) and pinned by a test, docs/AlarmTracking.md.
  • /alerts ack path: AlertsAckPathTests (AdminUI.Tests).
  • Native ack on a Secondary: ruling = refuse. It returns BadInvalidState with nothing routed, applied or reported (NativeAlarmAckPrimaryGate, fed from IDriverPrimaryRoleSource); the previous flap is gone. Primary verdict is published from host start (b99aea46).
  • SDK EventsMonitored unit for conditions materialised later: accepted residual, documented in docs/AlarmTracking.md (only costs an audit event while auditing is on).

Closed 2026-10-08 by the hardware-available issue sweep (master d898262c).

Resolved on master (bd638106, 83e9ffd2; merges ca0f1e77 and b99aea46). - [x] Scripted TimedShelve UnshelveTime: the requested duration is applied and the scripted projection carries `UnshelveAtUtc`, so UnshelveTime counts down to the real expiry instead of ~24.8 days. Review R1 follow-up: the SDK timed-unshelve timer is now a no-op because the engine owns expiry (otherwise both pair nodes routed a "system" Unshelve ahead of the engine's AutoUnshelve). - [x] Re-ack with a comment: recorded as AddComment (durable, replicated) and reports one comment event; an uncommented re-ack stays a no-op (`Part9StateMachineTests`, `ConditionMethodEventTests`). - [x] Native re-ack still reaching the driver: ruled deliberate (documented retry path) and pinned by a test, docs/AlarmTracking.md. - [x] /alerts ack path: `AlertsAckPathTests` (AdminUI.Tests). - [x] Native ack on a Secondary: **ruling = refuse**. It returns `BadInvalidState` with nothing routed, applied or reported (`NativeAlarmAckPrimaryGate`, fed from `IDriverPrimaryRoleSource`); the previous flap is gone. Primary verdict is published from host start (b99aea46). - [x] SDK EventsMonitored unit for conditions materialised later: accepted residual, documented in docs/AlarmTracking.md (only costs an audit event while auditing is on). *Closed 2026-10-08 by the hardware-available issue sweep (master d898262c).*
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#597