From ba7efab6a3943b4a346f4fa47e0b30d0ad9560e3 Mon Sep 17 00:00:00 2001 From: Adrian Gudas Date: Sun, 7 Dec 2025 20:34:19 -0500 Subject: [PATCH] use current metrics for log message on state transition --- lib/semian/adaptive_circuit_breaker.rb | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/semian/adaptive_circuit_breaker.rb b/lib/semian/adaptive_circuit_breaker.rb index 96eb5468e..37ce705f2 100644 --- a/lib/semian/adaptive_circuit_breaker.rb +++ b/lib/semian/adaptive_circuit_breaker.rb @@ -126,13 +126,13 @@ def wait_for_window Kernel.sleep(@sliding_interval) end - def check_and_notify_state_transition(old_rate, new_rate, pre_update_metrics) + def check_and_notify_state_transition(old_rate, new_rate) old_state = old_rate == 0.0 ? :closed : :open new_state = new_rate == 0.0 ? :closed : :open if old_state != new_state notify_state_transition(new_state) - log_state_transition(old_state, new_state, new_rate, pre_update_metrics) + log_state_transition(old_state, new_state, new_rate) end end @@ -140,17 +140,15 @@ def notify_state_transition(new_state) Semian.notify(:state_change, self, nil, nil, state: new_state) end - def log_state_transition(old_state, new_state, rejection_rate, pre_update_metrics) - requests = pre_update_metrics[:current_window_requests] - + def log_state_transition(old_state, new_state, rejection_rate) str = "[#{self.class.name}] State transition from #{old_state} to #{new_state}." - str += " success_count=#{requests[:success]}" - str += " error_count=#{requests[:error]}" - str += " rejected_count=#{requests[:rejected]}" + str += " success_count=#{metrics[:success]}" + str += " error_count=#{metrics[:error]}" + str += " rejected_count=#{metrics[:rejected]}" str += " rejection_rate=#{(rejection_rate * 100).round(2)}%" - str += " error_rate=#{(pre_update_metrics[:error_rate] * 100).round(2)}%" - str += " ideal_error_rate=#{(pre_update_metrics[:ideal_error_rate] * 100).round(2)}%" - str += " integral=#{pre_update_metrics[:integral].round(4)}" + str += " error_rate=#{(metrics[:error_rate] * 100).round(2)}%" + str += " ideal_error_rate=#{(metrics[:ideal_error_rate] * 100).round(2)}%" + str += " integral=#{metrics[:integral].round(4)}" str += " name=\"#{@name}\"" Semian.logger.info(str)