[Disagg] Add retry with exponential backoff for prefill bootstrap reg… (#25125)
This commit is contained in:
@@ -374,7 +374,7 @@ class CommonKVManager(BaseKVManager):
|
||||
return synced_port
|
||||
|
||||
def register_to_bootstrap(self):
|
||||
"""Register prefill server info to bootstrap server via HTTP POST."""
|
||||
"""Register prefill server info to bootstrap server via HTTP PUT."""
|
||||
if self.dist_init_addr:
|
||||
# Multi-node case: bootstrap server's host is dist_init_addr
|
||||
host = NetworkAddress.parse(self.dist_init_addr).resolved().host
|
||||
@@ -402,18 +402,33 @@ class CommonKVManager(BaseKVManager):
|
||||
"load_balance_method": self.server_args.load_balance_method,
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.put(url, json=payload, timeout=5)
|
||||
if response.status_code == 200:
|
||||
logger.debug("Prefill successfully registered to bootstrap server.")
|
||||
else:
|
||||
logger.error(
|
||||
f"Prefill instance failed to connect to bootstrap server: {response.status_code}, {response.text}"
|
||||
max_retries, initial_delay, max_delay = 5, 1.0, 30.0
|
||||
for attempt in range(max_retries):
|
||||
try:
|
||||
response = requests.put(url, json=payload, timeout=5)
|
||||
if response.status_code == 200:
|
||||
logger.debug("Prefill successfully registered to bootstrap server.")
|
||||
return
|
||||
logger.warning(
|
||||
f"Prefill register attempt {attempt + 1}/{max_retries} failed: status {response.status_code}"
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Prefill instance failed to register to bootstrap server: {e}"
|
||||
except Exception as e:
|
||||
# Walk to root cause to skip misleading urllib3 wrapper messages
|
||||
cause = e
|
||||
while cause.__cause__ is not None:
|
||||
cause = cause.__cause__
|
||||
logger.warning(
|
||||
f"Prefill register attempt {attempt + 1}/{max_retries} failed: {cause}"
|
||||
)
|
||||
if attempt == max_retries - 1:
|
||||
break
|
||||
delay = min(initial_delay * (2**attempt), max_delay) * (
|
||||
0.75 + 0.25 * (time.monotonic() % 1)
|
||||
)
|
||||
time.sleep(delay)
|
||||
logger.error(
|
||||
f"Prefill instance failed to register to bootstrap server after {max_retries} retries"
|
||||
)
|
||||
|
||||
@cache
|
||||
def _connect(self, endpoint: str, is_ipv6: bool = False):
|
||||
|
||||
Reference in New Issue
Block a user