vllm-project / vllm-project/production-stack

feature: A proposal for proxy request retry.

Open
#382 3 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
Python
Stars
2.6k
Forks
503
Avg merge
4d 17h
Merged PRs (30d)
8

Description

Feature Description

The routing logic returns a subset of potential backend vLLMs as candidates, rather than just one option, similar to a topK selection. When a proxy makes a request, it will retry among the available workers until it reaches a predefined limit (suggested limit: 3 attempts).

Why do you need this feature?

In scenarios where vLLM encounters common HTTP errors or suffers from an unrecoverable runtime error, the router can promptly redirect it to an alternative target endpoint. This ensures that the system can quickly adapt to failures and maintain service availability.

Additional context
  1. Implementing an exponential backoff mechanism might violate the SLO, such as a 2s TTFT. Therefore, we should opt for a quick retry strategy with a limited number of attempts.
  2. Workers can sometimes experience unrecoverable runtime errors. For example, I've encountered situations where the KV transfer buffer setting was too small, causing even a single prefill forward transfer to be blocked by the buffer availability condition. However, other endpoints may still be capable of handling the request.
  3. When implementing a re-routing logic may break the boundry of the routing and proxy handling.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The proposal names routing logic and proxy request handling, but no files, tests, or entry points. Start by tracing how candidate backends are selected and how proxy requests handle failures; done means requests can try alternative workers within a limited attempt count without violating the stated latency goal.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.