docs(index): OtOpcUa follow-up batch #674-#678 (fast OpcUaClient recovery, reverse history reads, HistoryUpdate Primary-only, role overlays)
This commit is contained in:
@@ -221,3 +221,42 @@ AddRoute of the dev Mac (`oee-tagdump-mac`, `10.181.206.245.1.1`) on the two tes
|
||||
- On SqlServer/QuestDB nodes, `Total` aggregate values change meaning.
|
||||
- Event HistoryRead may now return continuation points, which a client must follow.
|
||||
- Otherwise none by default.
|
||||
- **2026-10-12 follow-up batch #674–#678 (OtOpcUa `6d5c1c76`).** #674, #676 and #678 are closed. #675 and #677 stay
|
||||
open only for live AVEVA checks that need the VPN. New issues: #679 (Gateway `Count`/`Average` mode mapping) and
|
||||
#680 (pre-existing forward differences from the SDK aggregate calculator). Three docker-dev live gates passed; one
|
||||
failure (A1) was fixed and re-gated.
|
||||
- **#674 (HistoryUpdate):**
|
||||
- **Primary-only:** a non-Primary node returns `BadInvalidState`. The gate stays closed until the node's first
|
||||
redundancy snapshot.
|
||||
- **Future skew:** a timestamp beyond `now + ServerHistorian:HistoryUpdateMaxFutureSkew` (default 1 day) is
|
||||
rejected with `BadOutOfRange`.
|
||||
- **SqlServer v1 schema:** v1 is accepted again. On v1, modified reads and HistoryUpdate return
|
||||
`BadHistoryOperationUnsupported`, but historization continues.
|
||||
- **QuestDB TTL:** confirmed to follow the wall clock, so a far-future row cannot wipe history. The issue's
|
||||
premise was false.
|
||||
- **#675 (events):** reverse event HistoryRead pages newest-first on SqlServer and QuestDB. Gateway refuses an
|
||||
explicit reverse read. An end-only capped read goes backward where the backend supports it and stays forward on
|
||||
Gateway.
|
||||
- **#677 (aggregates):**
|
||||
- ⚠️ Reverse processed reads now follow the SDK / Part 13: anchored at the later time, partial bucket earliest,
|
||||
later-edge timestamps. Forward reads are unchanged.
|
||||
- A start-of-data Partial bit is set on forward reads.
|
||||
- A non-default client `AggregateConfiguration` is rejected with `BadAggregateConfigurationRejected`.
|
||||
- Gateway `IntegralDivisor` is now 1.
|
||||
- **#676 (OpcUaClient):**
|
||||
- Fast recovery: a definitive session loss re-initialises immediately instead of waiting for the ~90 s watchdog.
|
||||
Definitive means a session status, `BadServerHalted`, a sustained closed secure channel, or a subscription the
|
||||
server dropped. This is exposed through the new `IDriverConnectionLossSource`.
|
||||
- Restart recovery went from ~122 s to 12–27 s. Pause blips still recover in place.
|
||||
- The driver now rewrites the advertised endpoint's host and port.
|
||||
- A trailing re-read repairs values lost in flight.
|
||||
- The `ReconnectPeriod` setting is removed.
|
||||
- **#678 (clients and role overlays):**
|
||||
- Client.CLI/UI now rewrite the endpoint port, which fixes the rig `:4841` "certificate" error.
|
||||
- ⚠️ Per-role appsettings overlays never loaded on cluster-role nodes; they now do. Cluster-role nodes therefore
|
||||
pick up `Security.Ldap.Transport=Ldaps`, so set `Security__Ldap__Transport` explicitly on any plaintext-LDAP
|
||||
central node.
|
||||
- **ScadaBridge impact:**
|
||||
- OpcUaClient-backed tags recover much faster after an upstream restart.
|
||||
- Only reverse reads change shape (ScadaBridge issues no processed or event history reads).
|
||||
- HistoryUpdate is refused off-Primary.
|
||||
|
||||
Reference in New Issue
Block a user