Migrate all callers from /get_server_info to /server_info (#21463)

This commit is contained in:
David Cheung
2026-04-01 21:17:50 -07:00
committed by GitHub
parent 24997fe42c
commit ed427e1299
48 changed files with 74 additions and 70 deletions
+1 -1
View File
@@ -407,7 +407,7 @@ Use upstream SGLang binaries to start dedicated worker processes.
### Worker Lifecycle & Job Queue
- `JobQueue` handles asynchronous add/remove operations to avoid blocking clients.
- `WorkerManager` inspects worker metadata (`/get_server_info`, `/get_model_info`), tracks load, and exposes `flush_cache` and `get_loads`.
- `WorkerManager` inspects worker metadata (`/server_info`, `/get_model_info`), tracks load, and exposes `flush_cache` and `get_loads`.
- Per-worker circuit breakers and health probes keep the registry healthy; load monitor feeds metrics to cache-aware and power-of-two policies.
### Administrative & Worker APIs
@@ -269,6 +269,8 @@ async def flush_cache():
return Response(status_code=200)
# TODO: Remove `/get_server_info` alias after one release-cycle deprecation window.
@app.get("/server_info")
@app.get("/get_server_info")
async def get_server_info():
prefill_infos = []
@@ -277,10 +279,10 @@ async def get_server_info():
async with aiohttp.ClientSession() as session:
for server in lb.prefill_urls:
server_info = await session.get(f"{server}/get_server_info")
server_info = await session.get(f"{server}/server_info")
prefill_infos.append(await server_info.json())
for server in lb.decode_urls:
server_info = await session.get(f"{server}/get_server_info")
server_info = await session.get(f"{server}/server_info")
info_json = await server_info.json()
decode_infos.append(info_json)
# Extract internal_states from decode servers
@@ -1223,7 +1223,7 @@ impl RouterTrait for PDRouter {
async fn get_server_info(&self, _req: Request<Body>) -> Response {
// Get info from the first decode server to match sglang's server info format
// Note: We use decode workers for server info to match expected format
self.proxy_to_first_prefill_worker("get_server_info", None)
self.proxy_to_first_prefill_worker("server_info", None)
.await
}
+1 -1
View File
@@ -724,7 +724,7 @@ impl RouterTrait for Router {
}
async fn get_server_info(&self, req: Request<Body>) -> Response {
self.proxy_get_request(req, "get_server_info").await
self.proxy_get_request(req, "server_info").await
}
async fn get_models(&self, req: Request<Body>) -> Response {
+2
View File
@@ -610,6 +610,8 @@ pub fn build_app(
.route("/engine_metrics", get(engine_metrics))
.route("/v1/models", get(v1_models))
.route("/get_model_info", get(get_model_info))
.route("/server_info", get(get_server_info))
// TODO: Remove `/get_server_info` alias after one release-cycle deprecation window.
.route("/get_server_info", get(get_server_info));
// Build admin routes with control plane auth if configured, otherwise use simple API key auth
@@ -314,7 +314,7 @@ mod model_info_tests {
let req = Request::builder()
.method("GET")
.uri("/get_server_info")
.uri("/server_info")
.body(Body::empty())
.unwrap();
@@ -445,7 +445,7 @@ mod model_info_tests {
let req = Request::builder()
.method("GET")
.uri("/get_server_info")
.uri("/server_info")
.body(Body::empty())
.unwrap();
let resp = app.clone().oneshot(req).await.unwrap();
@@ -82,7 +82,7 @@ impl MockWorker {
let app = Router::new()
.route("/health", get(health_handler))
.route("/health_generate", get(health_generate_handler))
.route("/get_server_info", get(server_info_handler))
.route("/server_info", get(server_info_handler))
.route("/get_model_info", get(model_info_handler))
.route("/generate", post(generate_handler))
.route("/v1/chat/completions", post(chat_completions_handler))
@@ -101,7 +101,7 @@ impl TlsMockWorker {
let app = Router::new()
.route("/health", get(health_handler))
.route("/health_generate", get(health_generate_handler))
.route("/get_server_info", get(server_info_handler))
.route("/server_info", get(server_info_handler))
.route("/generate", post(generate_handler))
.route("/v1/chat/completions", post(chat_completions_handler))
.with_state(config);
@@ -765,7 +765,7 @@ mod pd_routing_unit_tests {
let implemented_endpoints = vec![
("/health", "GET", true),
("/health_generate", "GET", true), // Note: Python uses POST, we use GET
("/get_server_info", "GET", true),
("/server_info", "GET", true),
("/v1/models", "GET", true),
("/get_model_info", "GET", true),
("/generate", "POST", true),