[Bugfix][Frontend] Accept successful 2xx responses for batch output uploads (#60507)

Signed-off-by: bnkaiteam <bnkaiteam@gmail.com>
Co-authored-by: Flora Feng <4florafeng@gmail.com>
This commit is contained in:
bnkaiteam
2026-10-08 02:32:35 +00:00
committed by GitHub
co-authored by Flora Feng
parent caff2b44cb
commit 3722645539
2 changed files with 24 additions and 9 deletions
+22 -7
View File
@@ -1071,17 +1071,32 @@ def _make_aiohttp_put_session(status: int = 200, body_text: str = ""):
@pytest.mark.asyncio
async def test_upload_data_uploads_once_on_success():
"""A successful upload must not be retried (regression guard)."""
session = _make_aiohttp_put_session(status=200)
with patch(
"vllm.entrypoints.launchers.run_batch.aiohttp.ClientSession",
return_value=session,
@pytest.mark.parametrize("status", [200, 201, 204])
@pytest.mark.parametrize("from_file", [False, True])
async def test_upload_data_uploads_once_on_success(status, from_file, tmp_path):
"""Successful PUT responses must not retry either upload path."""
session = _make_aiohttp_put_session(status=status)
data_or_file = "payload"
if from_file:
path = tmp_path / "output.jsonl"
path.write_text(data_or_file, encoding="utf-8")
data_or_file = str(path)
with (
patch(
"vllm.entrypoints.launchers.run_batch.aiohttp.ClientSession",
return_value=session,
),
patch(
"vllm.entrypoints.launchers.run_batch.asyncio.sleep",
new_callable=AsyncMock,
) as sleep,
):
await upload_data(
"https://example.com/output.jsonl", "payload", from_file=False
"https://example.com/output.jsonl", data_or_file, from_file=from_file
)
assert session.put.call_count == 1
sleep.assert_not_awaited()
@pytest.mark.asyncio
+2 -2
View File
@@ -385,7 +385,7 @@ async def upload_data(output_url: str, data_or_file: str, from_file: bool) -> No
if from_file:
with open(data_or_file, "rb") as file:
async with session.put(output_url, data=file) as response:
if response.status != 200:
if not 200 <= response.status < 300:
error_text = await response.text()
raise Exception(
f"Failed to upload file.\n"
@@ -394,7 +394,7 @@ async def upload_data(output_url: str, data_or_file: str, from_file: bool) -> No
)
else:
async with session.put(output_url, data=data_or_file) as response:
if response.status != 200:
if not 200 <= response.status < 300:
error_text = await response.text()
raise Exception(
f"Failed to upload data.\n"