Skip to content

v2.7.1

Choose a tag to compare

@bpacholek bpacholek released this 16 Jul 21:13
· 6 commits to main since this release

Patch release — four bug fixes to the request/reply mux inbox (#118) and the pull-pipelining engine (#120).

Fixed

  • [bugfix] request()/requestMany() now surface a clear, catchable ConnectionException when the shared mux reply-inbox subscription _INBOX.<inbox>.* is rejected by server permissions, instead of hanging every request to a silent timeout (#167). The connection detects the async permission -ERR, drops the dead mux state (so a reconnect does not replay the rejected wildcard SUB), and fails requests fast with a message naming the _INBOX.> wildcard permission required. The in-flight request that triggers the rejection also fails fast.
  • [bugfix] Pull consumers with a priority group under the overflow/prioritized policy now honor setDepth() instead of pulling strictly serially — those policies never emit a Nats-Pin-Id, so the grouped-and-unpinned serialization guard previously disabled pipelining for the whole run. A grouped run now pulls serially only until its first delivery, then fans out. Conversely, a pinned_client group that captured a pin and then LOST it (a 423 cleared it mid-run) now re-serializes its pin re-capture instead of racing pin-less pulls at full depth (#170).
  • [bugfix] requestMany() no longer discards already-collected replies if the mux reply inbox is permission-rejected mid-collection: it returns the partial batch it has, and surfaces the clear permission error only when nothing was collected.

Full gate: PHPStan level 8, 1746 unit tests. No public API or wire-format change.