From c99bf2b245d08fce2c979bc3930d19a75a436bfb Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Sat, 22 Nov 2025 17:10:59 +0000 Subject: [PATCH] fixup! Improve caching by adding user ids and roles to hash. --- admin/dashboard.html | 33 +++++++++++++++++++++++++++++++++ admin_dashboard.go | 16 ++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/admin/dashboard.html b/admin/dashboard.html index dfbbf78..4f8c8f1 100644 --- a/admin/dashboard.html +++ b/admin/dashboard.html @@ -563,6 +563,26 @@ Enabled -- +
+ Total Requests + -- +
+
+ Total Successes + -- +
+
+ Total Failures + -- +
+
+ Consecutive Successes + -- +
+
+ Consecutive Failures + -- +
Max Failures -- @@ -1208,6 +1228,19 @@ document.getElementById('cb-enabled').textContent = data.enabled ? 'Yes' : 'No'; + if (data.counts) { + document.getElementById('cb-total-requests').textContent = + (data.counts.requests || 0).toLocaleString(); + document.getElementById('cb-total-successes').textContent = + (data.counts.total_successes || 0).toLocaleString(); + document.getElementById('cb-total-failures').textContent = + (data.counts.total_failures || 0).toLocaleString(); + document.getElementById('cb-consecutive-successes').textContent = + (data.counts.consecutive_successes || 0).toLocaleString(); + document.getElementById('cb-consecutive-failures').textContent = + (data.counts.consecutive_failures || 0).toLocaleString(); + } + if (data.config) { document.getElementById('cb-max-failures').textContent = data.config.max_failures || '--'; document.getElementById('cb-timeout').textContent = (data.config.timeout || '--') + 's'; diff --git a/admin_dashboard.go b/admin_dashboard.go index c8e07a5..20ef196 100644 --- a/admin_dashboard.go +++ b/admin_dashboard.go @@ -208,9 +208,17 @@ func (ad *AdminDashboard) getCircuitBreakerStatus(c *fiber.Ctx) error { if cb != nil { cbMutex.RLock() state := cb.State() + counts := cb.Counts() cbMutex.RUnlock() status["state"] = state.String() + status["counts"] = map[string]interface{}{ + "requests": counts.Requests, + "total_successes": counts.TotalSuccesses, + "total_failures": counts.TotalFailures, + "consecutive_successes": counts.ConsecutiveSuccesses, + "consecutive_failures": counts.ConsecutiveFailures, + } status["config"] = map[string]interface{}{ "max_failures": cfg.CircuitBreaker.MaxFailures, "failure_ratio": cfg.CircuitBreaker.FailureRatio, @@ -732,9 +740,17 @@ func (ad *AdminDashboard) gatherAllStats() map[string]interface{} { if cb != nil { cbMutex.RLock() state := cb.State() + counts := cb.Counts() cbMutex.RUnlock() cbStatus["state"] = state.String() + cbStatus["counts"] = map[string]interface{}{ + "requests": counts.Requests, + "total_successes": counts.TotalSuccesses, + "total_failures": counts.TotalFailures, + "consecutive_successes": counts.ConsecutiveSuccesses, + "consecutive_failures": counts.ConsecutiveFailures, + } cbStatus["config"] = map[string]interface{}{ "max_failures": cfg.CircuitBreaker.MaxFailures, "failure_ratio": cfg.CircuitBreaker.FailureRatio,