OpcUaClient: decide whether the 3 s PerEndpointConnectTimeout default is too tight for a first secure connect #912
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?
Follow-up from #910 (fixed in
73132b7d, merged79371402).OpcUaClientDriverOptions.PerEndpointConnectTimeoutdefaults to 3 s (src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts/OpcUaClientDriverOptions.cs:56). The budget covers endpoint discovery and client-side work: loading the application certificate, validating the server certificate, and the asymmetric crypto of a Basic256Sha256 OpenSecureChannel + CreateSession.#910 showed a cold test process on a loaded host exhausting those 3 s against a healthy opc-plc (opc-plc log: secure channel created 3 s after discovery, client closed it 48 ms later). The #816 tests now use 15 s; the browser integration tests already use 10 s. Production still uses 3 s.
Production exposure: a freshly started or heavily loaded OtOpcUa node can time out its first secure connect to a healthy upstream. It recovers via the reconnect watchdog, and since #910 the error says
TimeoutException: The connect did not complete within PerEndpointConnectTimeout (3 s)rather thanBadRequestInterrupted. Cost: delayed first data and a spurious fault/health transition at startup, worse with many OpcUaClient drivers starting at once.Trade-off: the budget is per endpoint so failover across a redundant endpoint list moves on quickly from a dead endpoint. Raising it slows failover past an unreachable endpoint by the same amount.
Options:
Decide, then update
docs/drivers/OpcUaClient.mdaccordingly.