@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 50dbd6c9e6
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 8, 06:15 UTC

[bugfix] Fix critical bug when reporting for all paths where handler.create_error_response is used (#34516)

Signed-off-by: Stanislav Kirillov <stas@nebius.com> Co-authored-by: Stanislav Kirillov <stas@nebius.com> Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>

Stanislav Kirillov committed Feb 15, 2026 at 12:24 UTC 50dbd6c9e6637589b404a499dbc34df85ad9b1ad
9 files changed +14 -14
vllm/entrypoints/openai/chat_completion/api_router.py
+2 -2
@@ -57,7 +57,7 @@ async def create_chat_completion(request: ChatCompletionRequest, raw_request: Re
57 try:
58 generator = await handler.create_chat_completion(request, raw_request)
59 except Exception as e:
60 - return handler.create_error_response(e)
60 + generator = handler.create_error_response(e)
61
62 if isinstance(generator, ErrorResponse):
63 return JSONResponse(
@@ -96,7 +96,7 @@ async def render_chat_completion(request: ChatCompletionRequest, raw_request: Re
96 try:
97 result = await handler.render_chat_request(request)
98 except Exception as e:
99 - return handler.create_error_response(e)
99 + result = handler.create_error_response(e)
100
101 if isinstance(result, ErrorResponse):
102 return JSONResponse(content=result.model_dump(), status_code=result.error.code)
vllm/entrypoints/openai/completion/api_router.py
+2 -2
@@ -57,7 +57,7 @@ async def create_completion(request: CompletionRequest, raw_request: Request):
57 try:
58 generator = await handler.create_completion(request, raw_request)
59 except Exception as e:
60 - return handler.create_error_response(e)
60 + generator = handler.create_error_response(e)
61
62 if isinstance(generator, ErrorResponse):
63 return JSONResponse(
@@ -94,7 +94,7 @@ async def render_completion(request: CompletionRequest, raw_request: Request):
94 try:
95 result = await handler.render_completion_request(request)
96 except Exception as e:
97 - return handler.create_error_response(e)
97 + result = handler.create_error_response(e)
98
99 if isinstance(result, ErrorResponse):
100 return JSONResponse(content=result.model_dump(), status_code=result.error.code)
vllm/entrypoints/openai/responses/api_router.py
+3 -3
@@ -66,7 +66,7 @@ async def create_responses(request: ResponsesRequest, raw_request: Request):
66 try:
67 generator = await handler.create_responses(request, raw_request)
68 except Exception as e:
69 - return handler.create_error_response(e)
69 + generator = handler.create_error_response(e)
70
71 if isinstance(generator, ErrorResponse):
72 return JSONResponse(
@@ -102,7 +102,7 @@ async def retrieve_responses(
102 stream=stream,
103 )
104 except Exception as e:
105 - return handler.create_error_response(e)
105 + response = handler.create_error_response(e)
106
107 if isinstance(response, ErrorResponse):
108 return JSONResponse(
@@ -128,7 +128,7 @@ async def cancel_responses(response_id: str, raw_request: Request):
128 try:
129 response = await handler.cancel_responses(response_id)
130 except Exception as e:
131 - return handler.create_error_response(e)
131 + response = handler.create_error_response(e)
132
133 if isinstance(response, ErrorResponse):
134 return JSONResponse(
vllm/entrypoints/pooling/classify/api_router.py
+1 -1
@@ -35,7 +35,7 @@ async def create_classify(request: ClassificationRequest, raw_request: Request):
35 try:
36 generator = await handler.create_classify(request, raw_request)
37 except Exception as e:
38 - return handler.create_error_response(e)
38 + generator = handler.create_error_response(e)
39
40 if isinstance(generator, ErrorResponse):
41 return JSONResponse(
vllm/entrypoints/pooling/embed/api_router.py
+1 -1
@@ -64,7 +64,7 @@ async def create_embedding(
64 try:
65 generator = await handler.create_embedding(request, raw_request)
66 except Exception as e:
67 - return handler.create_error_response(e)
67 + generator = handler.create_error_response(e)
68
69 if isinstance(generator, ErrorResponse):
70 return JSONResponse(
vllm/entrypoints/pooling/pooling/api_router.py
+1 -1
@@ -44,7 +44,7 @@ async def create_pooling(request: PoolingRequest, raw_request: Request):
44 try:
45 generator = await handler.create_pooling(request, raw_request)
46 except Exception as e:
47 - return handler.create_error_response(e)
47 + generator = handler.create_error_response(e)
48
49 if isinstance(generator, ErrorResponse):
50 return JSONResponse(
vllm/entrypoints/pooling/score/api_router.py
+2 -2
@@ -52,7 +52,7 @@ async def create_score(request: ScoreRequest, raw_request: Request):
52 try:
53 generator = await handler.create_score(request, raw_request)
54 except Exception as e:
55 - return handler.create_error_response(e)
55 + generator = handler.create_error_response(e)
56
57 if isinstance(generator, ErrorResponse):
58 return JSONResponse(
@@ -103,7 +103,7 @@ async def do_rerank(request: RerankRequest, raw_request: Request):
103 try:
104 generator = await handler.do_rerank(request, raw_request)
105 except Exception as e:
106 - return handler.create_error_response(e)
106 + generator = handler.create_error_response(e)
107
108 if isinstance(generator, ErrorResponse):
109 return JSONResponse(
vllm/entrypoints/serve/disagg/api_router.py
+1 -1
@@ -67,7 +67,7 @@ async def generate(request: GenerateRequest, raw_request: Request):
67 try:
68 generator = await handler.serve_tokens(request, raw_request)
69 except Exception as e:
70 - return handler.create_error_response(e)
70 + generator = handler.create_error_response(e)
71
72 if isinstance(generator, ErrorResponse):
73 return JSONResponse(
vllm/entrypoints/serve/tokenize/api_router.py
+1 -1
@@ -52,7 +52,7 @@ async def tokenize(request: TokenizeRequest, raw_request: Request):
52 try:
53 generator = await handler.create_tokenize(request, raw_request)
54 except Exception as e:
55 - return handler.create_error_response(e)
55 + generator = handler.create_error_response(e)
56
57 if isinstance(generator, ErrorResponse):
58 return JSONResponse(