Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ PR template's `release-note` block — see

<!-- BEGIN RELEASES -->

RELEASE v0.9.0 2026-07-29
2026-07-28 https://github.com/llm-d/llm-d-async/pull/370 Fix the `prometheus-budget` gate on a stock llm-d install: its primary source queried `inference_extension_flow_control_queue_size`, which only exists when EPP runs the flow control plugin, so the gate silently served its fallback budget. A source based on `inference_pool_per_pod_queue_size` (part of EPP's base metric set) is now tried between the flow control and vLLM sources. The resolved PromQL for each cascade tier is logged at startup, and the new `llm_d_async_async_gate_metric_source_available` gauge distinguishes a fallback budget from a real reading of the same value.
2026-07-28 https://github.com/llm-d/llm-d-async/pull/371 Fix `async_gate_decisions_total{reason="gate_closed"}`, which could never increment for a budget-based gate: back-pressure is applied pre-dequeue by shrinking the dispatch batch to zero, while the counter was only incremented post-dequeue inside the loop that batch size had just emptied — and a counter series that never increments is absent from `/metrics` entirely, so the query returned an empty vector rather than 0. The decision is now recorded where it is made: the sorted-set path counts each throttled poll whose batch the budget zeroed while the queue is non-empty, and the Pub/Sub path counts each receive window it skips for the same reason. Both backends also pre-create all four `reason` series at 0 when a queue starts. The counter's unit is decisions, not messages; the help text and README metric table now say so.
2026-07-29 https://github.com/llm-d/llm-d-async/pull/372 Fix `pool_name`, which carried three different meanings across the five series an operator needs to diagnose a throttled queue, so none of them joined. `async_gate_metric_value` and `async_gate_metric_threshold` labeled it with the gate's `pool` param — the InferencePool being queried — and carried no queue labels at all; `async_dispatch_budget` and `async_gate_decisions_total` read it from the raw queue config, so a queue that omitted `worker_pool_id` reported `pool_name=""` while its own `async_broker_backlog` and `async_pool_worker_limit` reported `"default"`. `pool_name` now always names the async worker pool that owns the series, the queue config is normalized before it is stored, and the two gate gauges carry the full `queue_id`/`queue_name`/`pool_name` triple so they join with the rest of the queue's metrics. The InferencePool a gate queries moves to its own `inference_pool` label, which also makes two worker pools gating on one InferencePool distinguishable. **Breaking for dashboards on the two gauges:** select `{inference_pool="..."}` where you previously selected `{pool_name="..."}`.
2026-07-29 https://github.com/llm-d/llm-d-async/pull/373 Fixed the end-to-end deploy guide (`docs/guides/e2e-deploy.md`), which referenced llm-d paths and chart flags that no longer exist. Step 5 now installs the `llm-d-router-gateway` chart instead of the retired GAIE `inferencepool` chart (`httpRoute.*` instead of `experimentalHttpRoute.*`, monitoring via the router recipe's `monitoring.values.yaml`, pinned to a new `ROUTER_CHART_VERSION`), the Istio and observability references point at their current locations, and the description of what the install creates now matches the rendered chart.
2026-07-29 https://github.com/llm-d/llm-d-async/pull/374 The `prometheus-budget` gate now logs its resolved closing point when it is created (`"prometheus-budget gate configured" ... closesAtLoadPerReadyPod=95`), making a mis-sized `max_concurrency` visible immediately instead of leaving the gate silently open forever. `max_concurrency` is documented as a **per ready pod** capacity in the README and the e2e deploy guide, with guidance on deriving it from the EPP saturation detector's `MaxConcurrency` or from the observed per-pod peak of `vllm:num_requests_running`.


RELEASE v0.8.0 2026-07-24
2026-07-09 https://github.com/llm-d/llm-d-async/pull/300 **Breaking:** `ResultMessage` now carries structured result fields so consumers can distinguish HTTP successes, HTTP errors, and non-HTTP failures — added `StatusCode` (int, non-zero means an HTTP response was received), `ErrorCode` (string, e.g. `DEADLINE_EXCEEDED`, `GATE_DROPPED`, `GATE_ERROR`, `INFERENCE_ERROR`, `INVALID_REQUEST`), and `ErrorMessage` (string). Wire-format changes to be aware of: - HTTP-error `Payload` now contains the raw upstream response body instead of a wrapped error string. - Gate-drop `Payload` changed from `{"status":"dropped"}` to `{"error":"Pool gating dropped request"}` and is now unified across all transports via `NewGateDroppedResult`. Detect gate drops via `ErrorCode == "GATE_DROPPED"` rather than parsing the payload body. - Gate-drop results now include `Metadata` (from `req.ReqMetadata()`), which the previous inline construction omitted. - `InferenceClient.SendRequest` now returns `(*InferenceResponse, error)`, where `InferenceResponse` has `StatusCode int` and `Body []byte` fields (previously `([]byte, int, error)`).
2026-07-10 https://github.com/llm-d/llm-d-async/pull/306 The default worker `concurrency` is now **64** (was 8). The processor is I/O-bound, so by Little's Law in-flight concurrency caps throughput; the old default of 8 left real inference pools mostly idle. Tune `concurrency` to your backend's latency/throughput target (see the Async Processor Operations Guide).
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ require (
cloud.google.com/go/pubsub/v2 v2.6.1
github.com/alicebob/miniredis/v2 v2.38.0
github.com/go-logr/logr v1.4.4
github.com/llm-d/llm-d-async/api v0.8.0
github.com/llm-d/llm-d-async/pipeline v0.8.0
github.com/llm-d/llm-d-async/producer v0.8.0
github.com/llm-d/llm-d-async/api v0.9.0
github.com/llm-d/llm-d-async/pipeline v0.9.0
github.com/llm-d/llm-d-async/producer v0.9.0
github.com/onsi/ginkgo/v2 v2.32.0
github.com/onsi/gomega v1.42.1
github.com/prometheus/client_golang v1.24.1
Expand Down
2 changes: 1 addition & 1 deletion pipeline/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ module github.com/llm-d/llm-d-async/pipeline

go 1.25.0

require github.com/llm-d/llm-d-async/api v0.8.0
require github.com/llm-d/llm-d-async/api v0.9.0

replace github.com/llm-d/llm-d-async/api => ../api
2 changes: 1 addition & 1 deletion producer/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.25.0

require (
github.com/alicebob/miniredis/v2 v2.38.0
github.com/llm-d/llm-d-async/api v0.8.0
github.com/llm-d/llm-d-async/api v0.9.0
github.com/redis/go-redis/v9 v9.21.0
github.com/stretchr/testify v1.11.1
)
Expand Down
7 changes: 0 additions & 7 deletions release-notes.d/unreleased/370.md

This file was deleted.

7 changes: 0 additions & 7 deletions release-notes.d/unreleased/371.md

This file was deleted.

7 changes: 0 additions & 7 deletions release-notes.d/unreleased/372.md

This file was deleted.

14 changes: 0 additions & 14 deletions release-notes.d/unreleased/373.md

This file was deleted.

14 changes: 0 additions & 14 deletions release-notes.d/unreleased/374.md

This file was deleted.

Loading