From af86538491dc6c2b4cff40b33a565964e6b1a2b4 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sat, 23 May 2026 22:53:52 +0800 Subject: [PATCH] fix: auto-disable channels on 5xx errors --- setting/operation_setting/status_code_ranges.go | 2 +- setting/operation_setting/status_code_ranges_test.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/setting/operation_setting/status_code_ranges.go b/setting/operation_setting/status_code_ranges.go index 14cfacad71ed..5592cdf88521 100644 --- a/setting/operation_setting/status_code_ranges.go +++ b/setting/operation_setting/status_code_ranges.go @@ -14,7 +14,7 @@ type StatusCodeRange struct { End int } -var AutomaticDisableStatusCodeRanges = []StatusCodeRange{{Start: 401, End: 401}} +var AutomaticDisableStatusCodeRanges = []StatusCodeRange{{Start: 401, End: 401}, {Start: 500, End: 599}} // Default behavior matches legacy hardcoded retry rules in controller/relay.go shouldRetry: // retry for 1xx, 3xx, 4xx(except 400/408), 5xx(except 504/524), and no retry for 2xx. diff --git a/setting/operation_setting/status_code_ranges_test.go b/setting/operation_setting/status_code_ranges_test.go index 4e292a3681a9..fe7f780783b8 100644 --- a/setting/operation_setting/status_code_ranges_test.go +++ b/setting/operation_setting/status_code_ranges_test.go @@ -75,11 +75,20 @@ func TestShouldRetryByStatusCode_DefaultMatchesLegacyBehavior(t *testing.T) { require.False(t, ShouldRetryByStatusCode(408)) require.True(t, ShouldRetryByStatusCode(429)) require.True(t, ShouldRetryByStatusCode(500)) + require.True(t, ShouldRetryByStatusCode(502)) require.False(t, ShouldRetryByStatusCode(504)) require.False(t, ShouldRetryByStatusCode(524)) require.True(t, ShouldRetryByStatusCode(599)) } +func TestShouldDisableByStatusCode_DefaultDisables5xx(t *testing.T) { + require.True(t, ShouldDisableByStatusCode(401)) + require.True(t, ShouldDisableByStatusCode(500)) + require.True(t, ShouldDisableByStatusCode(502)) + require.True(t, ShouldDisableByStatusCode(599)) + require.False(t, ShouldDisableByStatusCode(400)) +} + func TestIsAlwaysSkipRetryStatusCode(t *testing.T) { require.True(t, IsAlwaysSkipRetryStatusCode(504)) require.True(t, IsAlwaysSkipRetryStatusCode(524))