R4.3: measured idle-state GetStoreForwardStatusAsync over gRPC
Route GetStoreForwardStatusAsync to a gRPC path that actually contacts the server (StatusService.GetHistorianConsoleStatus) instead of synthesizing an all-false result blind. On a reachable/normal server it returns the not-storing baseline but MEASURED; when the server is unreachable or the console-status call fails it reports ErrorOccurred with the underlying error (the old synthesis never contacted the server). The active-SF buffer magnitude (Storing/Pending/DataStored) stays false because it lives behind the D2 storage-engine console wall. Non-gRPC transports keep the synthesized fallback. Live-verified against the 2023 R2 server; gated integration test GetStoreForwardStatusAsync_OverGrpc_ReturnsMeasuredIdleState added. README operation table updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6mcaT2PjRFKcogzp9UkfC
This commit is contained in:
@@ -57,7 +57,14 @@ internal sealed class Historian2020ProtocolDialect
|
||||
public Task<HistorianStoreForwardStatus> GetStoreForwardStatusAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return Wcf.HistorianWcfStatusClient.GetStoreForwardStatusAsync(_options, cancellationToken);
|
||||
|
||||
// Over gRPC (2023 R2) we return a MEASURED idle-state: the client actually contacts the server
|
||||
// (GetHistorianConsoleStatus) and reports ErrorOccurred when unreachable. The active-SF buffer
|
||||
// magnitude lives behind the D2 storage-engine console wall and stays false. Non-gRPC transports
|
||||
// keep the synthesized all-false (no SF sidecar to probe). See R4.3 §9.7.
|
||||
return UseGrpc
|
||||
? HistorianGrpcStatusClient.GetStoreForwardStatusAsync(_options, cancellationToken)
|
||||
: Wcf.HistorianWcfStatusClient.GetStoreForwardStatusAsync(_options, cancellationToken);
|
||||
}
|
||||
|
||||
public Task<string?> GetSystemParameterAsync(string name, CancellationToken cancellationToken)
|
||||
|
||||
Reference in New Issue
Block a user