From e3fb5bd7cf9bc3084ebc2ae77981a2166551465e Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Thu, 9 Apr 2026 16:46:42 +0300 Subject: [PATCH 1/2] dashboard: Add delay with exp() backoff to prevent flooding backend Signed-off-by: Denys Fedoryshchenko --- kcidev/libs/dashboard.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kcidev/libs/dashboard.py b/kcidev/libs/dashboard.py index a9f4d8b..f558c9a 100644 --- a/kcidev/libs/dashboard.py +++ b/kcidev/libs/dashboard.py @@ -44,6 +44,8 @@ def wrapper( logging.warning( f"Retrying request due to status {r.status_code} (attempt {retries}/{max_retries})" ) + # Delay before retrying, to prevent hammering the server with exponential backoff + time.sleep(2**retries) continue else: logging.error( From 5c3b2167e6f3b9ae1cd3fdacf4a45048984e8c72 Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Thu, 9 Apr 2026 16:41:27 +0300 Subject: [PATCH 2/2] bisect: Return proper error code on kci-dev execution error While possibility of this exception low, we need to detect this situation as error by kci-dev returning proper exit code. Signed-off-by: Denys Fedoryshchenko --- kcidev/subcommands/bisect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kcidev/subcommands/bisect.py b/kcidev/subcommands/bisect.py index ad1140f..20ed83f 100644 --- a/kcidev/subcommands/bisect.py +++ b/kcidev/subcommands/bisect.py @@ -226,7 +226,7 @@ def bisection_loop(state): except Exception as e: logging.error(f"Error getting return code from kci-dev: {e}") kci_err(f"Error executing kci-dev, no returncode: {e}") - sys.exit + sys.exit(1) logging.info(f"Test completed with return code: {testret}")