perf(comms+audit): close phase-2 residuals — direct ingest path, monotonic timeouts, synthetic probe, not-reporting set, cursor-exact audit pull
This commit is contained in:
@@ -39,6 +39,15 @@ public sealed class CommunicationOptionsValidator : OptionsValidatorBase<Communi
|
||||
builder.RequireThat(options.NotificationForwardTimeout > TimeSpan.Zero,
|
||||
$"ScadaBridge:Communication:NotificationForwardTimeout must be a positive duration (was {options.NotificationForwardTimeout}).");
|
||||
|
||||
// Outermost rung of the audit-ingest timeout ladder. It must be strictly greater than the
|
||||
// gRPC deadline / central Ask beneath it, or a slow-but-succeeding central write gets acked
|
||||
// to a caller that already gave up and re-sent the batch. See CommunicationOptions.
|
||||
builder.RequireThat(
|
||||
options.AuditForwardTimeout > Grpc.SiteStreamGrpcServer.AuditIngestAskTimeout,
|
||||
$"ScadaBridge:Communication:AuditForwardTimeout must be strictly greater than the "
|
||||
+ $"central audit-ingest Ask timeout ({Grpc.SiteStreamGrpcServer.AuditIngestAskTimeout}) "
|
||||
+ $"so the ingest timeout ladder stays monotonic (was {options.AuditForwardTimeout}).");
|
||||
|
||||
builder.RequireThat(options.GrpcKeepAlivePingDelay > TimeSpan.Zero,
|
||||
$"ScadaBridge:Communication:GrpcKeepAlivePingDelay must be a positive duration (was {options.GrpcKeepAlivePingDelay}).");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user