ConditionRefresh wire test receives an extra Unspecified event in hosted CI #728
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hosted supporting run985/job3606 (exact head
e1feb9fbb6) failed the existing loopback ConditionRefresh wire test at2026-10-13 21:32:19UTC:tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests/OpcUaClientDriverWireTests.cs:317A_condition_already_active_before_subscribe_is_reported_by_ConditionRefreshExpected
[AlarmTransitionKind.Acknowledge]; actual[AlarmTransitionKind.Unspecified, AlarmTransitionKind.Acknowledge]. Assertion: “the second refresh re-delivered an unchanged state and must have emitted nothing”. The test verifies an active/unacked condition before subscribe, unchanged resubscription, and a positive upstream acknowledgement control.This run is superseded by PR#724 head
c4b4046832and required run986/job3607; the required run is still waiting. The new head changes only freshness acceptance tests in addition to the existing #721/#722 scope. Neither head’s eventual result is a substitute for investigating this observed failure. No result for run986 is claimed.Root cause is unproven. Source has at least two distinct routes to Unspecified: same Active/Acked with changed Message/Severity, or a projected non-condition event without state. Refresh markers are explicitly rejected. The test uses fixed settling delays and captures its baseline after the first Retrigger; ordering/delivery must be investigated rather than assumed. Existing alarm/refresh behavior fixes under closed #619/#587 are relevant history, not proof this is the same defect. State=all ConditionRefresh search found no separate open ticket for this failure; #717 is future Warm architecture, not this observed current-mode regression.
Acceptance:
Read-only triage is in progress; no fixes, CI restarts/cancellations, external endpoint calls or historian writes have been performed. Evidence: captured authoritative
work/lmx724-ci-watch-3606.log:2723–2739, parent source inspection, and forthcomingwork/lmx-condition-refresh-failure-triage.md. No historical CI resource cause or production alarm loss is inferred from this one failure.Read-only triage adds a third real Unspecified route: OpcUaClientDriver.AnnotateAlarmQuality (3252–3272) emits a quality-only annotation, called by communication-loss/recovery paths. The failing assertion records Kind only, so the extra event cannot yet be classified as a duplicate retained condition versus a quality annotation. Exact event QualityStatusCode/state/message/severity and PublishError status/subscription-ID/timing are missing from captured CI output.
A source-backed hypothesis: HandlePublishError (3039–3064) treats BadNoSubscription as definitive loss whenever any current tag/alarm subscription is tracked; same-session identity is checked, but this global status does not match subscriptionId. A delayed error during intentional last-subscription deletion could arrive after new subscription registration and annotate quality. This is not established as the hosted cause. Genuine loss handling must remain intact; do not suppress errors or weaken the exact acknowledgement/unchanged-refresh assertions merely to make CI pass.
The source-verified local loopback/synthetic exact test is being reproduced unchanged in a scrubbed environment with offline cached-package restore/build. No product/test edits, instrumentation, retries in CI, external calls or production alarm defect claim. Required run986 remains queued; supporting985 reports123 OPC UA integration passed/1failed and is still running other suites.
Unchanged exact local loopback reproduction completed at
c4b40468: three attempts FAIL/PASS/FAIL, each one selected fact and zero skips. Both failures exactly match hosted [Unspecified,Acknowledge] atline317. Parent independently parsed all three TRX files. Offline project restore/build succeeded (zero build warnings/errors); five-key scrubbed environment, no source edits, no external fixtures; checkout remains clean. This establishes intermittent reproducibility, not cause or resolution. Initial three-attempt cap is exhausted.Source trace confirms identical retained-condition content alone is deduplicated; candidates include changed message/severity, missing condition bool fields, or quality-only annotations. A delayed BadNoSubscription during intentional replacement remains a hypothesis. Bounded throwaway test-only metadata/session-error tracing design has been submitted for approval; no instrumentation or fix until approved. Preserve exact silence/acknowledgement assertions; no CI rerun/retry or sleep inflation. Full report work/lmx-condition-refresh-failure-triage.md.
Authoritative Actions API21:59UTC: supporting run985/job3606 completed FAILURE at21:58:35, exact earlier
e1feb9fhead. The one failed test is ConditionRefresh wire fact tracked in#728 (123integration passed/1failed); Runtime835passed/3existing skips and other suites passed. The always-run test-count guard succeeded:62TRX,14654executed,573individual skips, minimum12000. Artifact unit-trx upload succeeded. Floor/artifact success does not make the failed test run green.Required run986/job3607 STARTED at21:58:38, exact final PR#724 head
c4b4046832. It is in_progress with no conclusion. This new run is the required merge gate; no result is assumed. #728 unchanged local reproduction FAIL/PASS/FAIL and source hypotheses remain recorded; a bounded metadata probe awaits design approval. No product/test instrumentation or CI rerun/cancel/restart. PR remains open/unmerged;#721/#722 remain open, and local #725/#726 publication remains held until#724 clears its gate.Required run986/job3607 at unchanged ConditionRefresh-source head
c4b40468reports OPC UA server integration124passed/0failed/0skipped at22:35:31UTC. Supporting985 had the same ConditionRefresh fact fail; unchanged local reproduction was FAIL/PASS/FAIL. This additional passing hosted run corroborates intermittency, not a fix. No diagnostic or product/test change has been made to the failing fact. #728 remains open pending approved tracing and cause-specific verification; do not close it on one green run.Whole run986 is still in_progress; server unit and Runtime suites plus final count/artifact gates remain. #724’s merge gate is not yet satisfied.
Additional unchanged hosted observation: main run987/job3608 at merged head
c89912a93bpassed the OPC UA integration suite:124 passed/0 failed/0 skipped (8m54s), observed23:41 UTC. No ConditionRefresh source/assertion change was made. This corroborates intermittency alongside supporting CI985 failure and unchanged local FAIL/PASS/FAIL; it is not a verified cause or fix. #728 remains open, and the pending bounded metadata probe still requires its existing design approval. The whole main CI job remains active, and PR730 final-head acceptance has not started.