Migrate all callers from /get_server_info to /server_info (#21463)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user