diff --git a/amqp/adapter/consul_global_id_generator.py b/amqp/adapter/consul_global_id_generator.py index 2a19ea8..9a5e893 100644 --- a/amqp/adapter/consul_global_id_generator.py +++ b/amqp/adapter/consul_global_id_generator.py @@ -83,13 +83,14 @@ def get_unique_instance_id(config: AMQAdapter) -> int: logger.debug(f"Successfully obtained unique ID: {new_value}") return new_value logger.debug(f"CAS update failed on attempt {attempt + 1}, retrying...") - time.sleep(retry_delay_seconds * (1 << attempt)) # Exponential backoff - index, data = c.get(consul_counter_key) - if data is None: - logger.error("Counter disappeared during update") - return generate_fallback_id() - current_value = int(data["Value"].decode("utf-8")) - new_value = current_value + 1 + if attempt < max_retries - 1: + time.sleep(retry_delay_seconds * (1 << attempt)) # Exponential backoff + index, data = c.get(consul_counter_key) + if data is None: + logger.error("Counter disappeared during update") + return generate_fallback_id() + current_value = int(data["Value"].decode("utf-8")) + new_value = current_value + 1 logger.error(f"Failed to update counter after {max_retries} attempts") return generate_fallback_id() except Exception as e: