Warm redundancy tier flip blocked on ScadaBridge#138 (companion of #717) #907
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?
Companion of #717 (plan T11). Warm non-transparent redundancy is on
masterdefault-off (OpcUa:Redundancy:Mode=Unset). No tier may setMode=Warmuntil dohertj2/ScadaBridge#138 (ServiceLevel-aware failover) is deployed wherever ScadaBridge reads OtOpcUa.Why: ScadaBridge fails over only on repeated unstable disconnects. A Warm Standby keeps the session healthy and serves ordinary tags
BadOutOfService, so a ScadaBridge connection that lands on the Standby would sit on Bad quality and never fail over (spec §5,docs/plans/2026-11-11-warm-redundancy-717-design.md).Unblock when ScadaBridge#138 is deployed. Then: T13 docker-dev gate (
docker-dev/docker-compose.warm.yml), then one non-production pair (rollout in the plan).https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi
QA vq03/vq04 is on
Mode=Warmsince 2026-11-13 13:49Z. Every applicable gate passes, and this closes the tier flip. ScadaBridge#138 is deployed on QA (8e32f353) and was gated live against this pair in the same window.Record:
docs/deploy/2026-11-13-qa-warm-717.md(1862fab6). ScadaBridge side:docs/deployment/deployment-records/2026-11-13-qa-warmcanary-opcua-connection.md(933da568).Change. Two service-env entries per node:
OpcUa__Redundancy__Mode=WarmandOpcUa__PeerApplicationUris__0=<the other node's URI>. Hashes were checked against each node'sOpcUa__ApplicationUri; no values were printed. The build is unchanged (76e73e7d).-VerifyOK 21/21 after every start.RedundancyModeis already Warm, so there is nomode_mismatch.redundancyCLI: Mode Warm, ServerUriArray self-first on each node. Boot bannerMode="Warm" … peers=[urn:wonder-app-vq0N:OtOpcUa]BadOutOfService/null on the Standby and are Good on the PrimaryBadNotWritableon both nodes, ahead of the Warm check.BadInvalidStatestays proven by T13 L10. Part 9 refusal: QA has no conditiondemotion … ServiceLevel=0at +0.03 s; vq04promotion to "Active" (reason=agreed)at +0.18 s (subscription 250 at +0.65 s)warm_role1End state: Warm on both nodes. vq04 is Primary (250) and vq03 is Standby (90); the Primary moved during the gate and Warm does not fail back. DEV vd03 stays Unset.
Rollback, on each node:
E:\psrem-stage\otopcua-76e73e7d\warm-env.ps1 -Action Unset..regbackups are in…\backup\OtOpcUaHost-pre-warm-*.reg.Follow-up from the gate: ScadaBridge#141. A graceful Primary stop still reaches ScadaBridge through the 66 s connectivity retries, because the 0 level lasts about 6 s, which is shorter than the 10 s window. It does not block Warm.
https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi