mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-08 03:08:45 +00:00
test(mcp): await registration on every configured replica
This commit is contained in:
parent
326ba8c8a4
commit
db4cd8de8d
1 changed files with 9 additions and 20 deletions
|
|
@ -218,26 +218,15 @@ class McpClient:
|
||||||
)
|
)
|
||||||
|
|
||||||
def await_registered(self, server_id: str) -> McpServerRow:
|
def await_registered(self, server_id: str) -> McpServerRow:
|
||||||
"""Poll /v1/mcp/server and return the matching row. Fails at poll_timeout.
|
"""Wait for every configured replica to list the server and return its row."""
|
||||||
|
registered = self.proxy.read_body_back_everywhere(
|
||||||
The DB row exists the moment registration returns, but a data-plane pod
|
"/v1/mcp/server",
|
||||||
answers the listing from a registry it refreshes on a periodic DB sync, so a
|
McpServerListResponse,
|
||||||
pod that joined the load balancer after the write reports the server as
|
settled=lambda response: any(row.server_id == server_id for row in response.root),
|
||||||
absent until its first sync.
|
)
|
||||||
"""
|
return next(
|
||||||
deadline = time.monotonic() + self.proxy.poll_timeout
|
row for response in registered.values() for row in response.root if row.server_id == server_id
|
||||||
while True:
|
)
|
||||||
registered = self.registered_servers()
|
|
||||||
server = next((row for row in registered if row.server_id == server_id), None)
|
|
||||||
if server is not None:
|
|
||||||
return server
|
|
||||||
if time.monotonic() >= deadline:
|
|
||||||
raise AssertionError(
|
|
||||||
f"registered server {server_id} still absent from /v1/mcp/server "
|
|
||||||
f"{self.proxy.poll_timeout}s after registration (the data plane never synced "
|
|
||||||
f"the row): {frozenset(row.server_id for row in registered)}"
|
|
||||||
)
|
|
||||||
time.sleep(self.proxy.poll_interval)
|
|
||||||
|
|
||||||
def generate_key(
|
def generate_key(
|
||||||
self,
|
self,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue