From 64c914019de580b4095b4ac20496e2fc7b5767d7 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 23 Mar 2026 00:12:19 -0400 Subject: [PATCH] feat(lmxproxy): always show RPC Operations table, rename from 'Operations' Table now displays all 5 RPC types (Read, ReadBatch, Write, WriteBatch, Subscribe) with dashes for zero-count operations instead of hiding the table entirely. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Status/StatusReportService.cs | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs index 10b3b25..695361a 100644 --- a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs +++ b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs @@ -232,31 +232,38 @@ namespace ZB.MOM.WW.LmxProxy.Host.Status sb.AppendLine(" "); sb.AppendLine(" "); - // Operations table - if (statusData.Performance.Operations.Count > 0) - { - sb.AppendLine("
"); - sb.AppendLine("

Operations

"); - sb.AppendLine(" "); - sb.AppendLine(" "); + // RPC Operations table (always shown) + sb.AppendLine("
"); + sb.AppendLine("

RPC Operations

"); + sb.AppendLine("
OperationCountSuccess RateAvg (ms)Min (ms)Max (ms)P95 (ms)
"); + sb.AppendLine(" "); - foreach (var op in statusData.Performance.Operations) + // All known RPC operations — show each even if 0 calls + var rpcNames = new[] { "Read", "ReadBatch", "Write", "WriteBatch", "Subscribe" }; + foreach (var rpcName in rpcNames) + { + var key = rpcName.Substring(0, 1).ToLowerInvariant() + rpcName.Substring(1); + if (statusData.Performance.Operations.TryGetValue(key, out var op)) { sb.AppendLine($" " + - $"" + - $"" + - $"" + - $"" + - $"" + - $"" + - $"" + + $"" + + $"" + + $"" + + $"" + + $"" + + $"" + + $"" + $""); } - - sb.AppendLine("
OperationCountSuccess RateAvg (ms)Min (ms)Max (ms)P95 (ms)
{op.Key}{op.Value.TotalCount}{op.Value.SuccessRate:P1}{op.Value.AverageMilliseconds:F1}{op.Value.MinMilliseconds:F1}{op.Value.MaxMilliseconds:F1}{op.Value.Percentile95Milliseconds:F1}{rpcName}{op.TotalCount}{op.SuccessRate:P1}{op.AverageMilliseconds:F1}{op.MinMilliseconds:F1}{op.MaxMilliseconds:F1}{op.Percentile95Milliseconds:F1}
"); - sb.AppendLine("
"); + else + { + sb.AppendLine($" {rpcName}0—————"); + } } + sb.AppendLine(" "); + sb.AppendLine(" "); + // Detailed health (if available) if (statusData.DetailedHealth != null) {