Skip to content
Open
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
7 changes: 2 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,10 @@ WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# go.work redirects ./api and ./pipeline to local source; both dirs must exist before go mod download.
# producer is in the workspace for local dev/e2e but is not imported by cmd/main.go, so drop it here
# to avoid copying producer/ into the build context.
COPY go.work go.work
# Local replace directives (./api, ./pipeline, ./producer) must exist before go mod download.
COPY api/ api/
COPY pipeline/ pipeline/
RUN go work edit -dropuse ./producer
COPY producer/ producer/
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download
Expand Down
8 changes: 8 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,11 @@ PR template's `release-note` block — see
[CONTRIBUTING.md → Release notes](CONTRIBUTING.md#release-notes).

<!-- BEGIN RELEASES -->

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).
2026-07-21 https://github.com/llm-d/llm-d-async/pull/334 Fixed a gate capacity reservation leak in the Redis sorted-set flow: retried requests never released their per-queue gate reservation, so `inFlight` ratcheted up on every retry until the queue stopped dispatching entirely (`local-max-concurrency`) or the `redis-quota` counter over-admitted on TTL reset. Retries now release the reservation before re-enqueue (and re-reserve on re-dispatch).
2026-07-21 https://github.com/llm-d/llm-d-async/pull/336 Fixed over-admission in concurrency-mode `redis-quota`: the in-flight counter's TTL was set only on the first acquire and never refreshed, so under sustained load the key expired mid-flight and the counter reset to 0, admitting requests beyond the configured limit. The TTL is now refreshed on every acquire/release, so it only expires after a full `window` of inactivity (crash-orphan cleanup).
2026-07-21 https://github.com/llm-d/llm-d-async/pull/339 Added two Prometheus gauges (labeled by `pool_name`) that expose the raw value a metric-based dispatch gate reads and the threshold it compares against, so you can see why a gate is open or closed: `async_gate_metric_value` (for the saturation gate, `1 - saturation`) and `async_gate_metric_threshold`. Recorded by the `prometheus-saturation`, `prometheus-budget`, and `prometheus-query` gates.
2026-07-21 https://github.com/llm-d/llm-d-async/pull/340 Breaking: the Helm chart is renamed from `async-processor` to `llm-d-async` and now publishes to `oci://ghcr.io/llm-d/charts/llm-d-async`. Rendered resources are named `llm-d-async-*` with `app.kubernetes.io/name=llm-d-async`; because a Deployment's selector is immutable, upgrading from an existing `async-processor` install requires uninstall + reinstall. The old `charts/async-processor` package remains available (no redirect) but receives no new releases. The default OpenTelemetry trace service name also changes from `async-processor` to `llm-d-async` (`OTEL_SERVICE_NAME`) — update any trace queries/dashboards accordingly.
12 changes: 9 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.7.4
github.com/llm-d/llm-d-async/pipeline v0.7.4
github.com/llm-d/llm-d-async/producer v0.7.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/onsi/ginkgo/v2 v2.32.0
github.com/onsi/gomega v1.42.1
github.com/prometheus/client_golang v1.24.0
Expand Down Expand Up @@ -136,3 +136,9 @@ require (
sigs.k8s.io/structured-merge-diff/v6 v6.3.1 // indirect
sigs.k8s.io/yaml v1.6.0 // indirect
)

replace github.com/llm-d/llm-d-async/api => ./api

replace github.com/llm-d/llm-d-async/pipeline => ./pipeline

replace github.com/llm-d/llm-d-async/producer => ./producer
6 changes: 0 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/llm-d/llm-d-async/api v0.7.4 h1:R3CBDMxlT+9GOyJkgNdQO7zqSpwVFgfz085vSlXn91Q=
github.com/llm-d/llm-d-async/api v0.7.4/go.mod h1:hzjFDTFBJEyW9/1vrHAD2dtCVLTzqggU1GBW+7YhxlQ=
github.com/llm-d/llm-d-async/pipeline v0.7.4 h1:4A2IDYBwgi0tML/3en8zNM16vByZwoKU7L1jaHwxbto=
github.com/llm-d/llm-d-async/pipeline v0.7.4/go.mod h1:G2MztMEFSsWc4bFNyuzwGflt4kagmFKZlXBvarXKvuI=
github.com/llm-d/llm-d-async/producer v0.7.4 h1:dmMNtkorVykYX5UXRYY7qC7q8IesGtbHBY+RFwoaE60=
github.com/llm-d/llm-d-async/producer v0.7.4/go.mod h1:nHxbBM/mVL7bTu2ZVZ+OMz/Up9m2PhpBmeLfoq899+0=
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=
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.7.4
require github.com/llm-d/llm-d-async/api v0.8.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.37.0
github.com/llm-d/llm-d-async/api v0.7.4
github.com/llm-d/llm-d-async/api v0.8.0
github.com/redis/go-redis/v9 v9.18.0
github.com/stretchr/testify v1.11.1
)
Expand Down
24 changes: 0 additions & 24 deletions release-notes.d/unreleased/300.md

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

Loading