diff --git a/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Config/GalaxyDriverOptions.cs b/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Config/GalaxyDriverOptions.cs index 7362f54..3df8a79 100644 --- a/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Config/GalaxyDriverOptions.cs +++ b/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Config/GalaxyDriverOptions.cs @@ -22,13 +22,22 @@ public sealed record GalaxyDriverOptions( /// through the server-side secret store (DPAPI for production, environment override for /// dev) — the API key never appears in cleartext config. /// +// PR 6.5 tuning notes: +// ConnectTimeoutSeconds = 10 — cold-start network path comfort margin; soak runs +// never saw a successful connect take >2s, so 10s is generous without being lax. +// DefaultCallTimeoutSeconds = 30 — bumped from 5s because a 50k-tag SubscribeBulk +// can exceed 5s under MxAccess COM contention (the worker walks the gw item list +// serially under the apartment lock). 30s leaves comfortable headroom for the +// legitimate worst case while still failing fast on a wedged worker. +// StreamTimeoutSeconds = 0 — unlimited; the StreamEvents RPC must run for the +// lifetime of the driver. Set a finite value only for diagnostic runs. public sealed record GalaxyGatewayOptions( string Endpoint, string ApiKeySecretRef, bool UseTls = true, string? CaCertificatePath = null, int ConnectTimeoutSeconds = 10, - int DefaultCallTimeoutSeconds = 5, + int DefaultCallTimeoutSeconds = 30, int StreamTimeoutSeconds = 0); /// diff --git a/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs b/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs index b9cc8ce..0e0f6dc 100644 --- a/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs +++ b/src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs @@ -54,7 +54,7 @@ public static class GalaxyDriverFactoryExtensions UseTls: dto.Gateway.UseTls ?? true, CaCertificatePath: dto.Gateway.CaCertificatePath, ConnectTimeoutSeconds: dto.Gateway.ConnectTimeoutSeconds ?? 10, - DefaultCallTimeoutSeconds: dto.Gateway.DefaultCallTimeoutSeconds ?? 5, + DefaultCallTimeoutSeconds: dto.Gateway.DefaultCallTimeoutSeconds ?? 30, StreamTimeoutSeconds: dto.Gateway.StreamTimeoutSeconds ?? 0), MxAccess: new GalaxyMxAccessOptions( ClientName: dto.MxAccess?.ClientName