You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: tierpriority catch-all, helm dead flags, SS gating cleanup, pubsub buffering
P1 — tierpriority strands unknown labels
popNext only polled buckets in the configured ClassOrder × TierOrder
(plus empty-string fallbacks). A message with tier=urgent or class=gold
(typo or schema drift) landed in a bucket nothing consults — work
stranded until the input channel closed.
Added popUnconfigured: a final catch-all pass that drains any bucket
whose (tier, class) key isn't covered by the configured order, at
lowest priority. The policy is now total over its input domain.
P1 — helm chart emits removed flags
ap-deployments.yaml still emitted --redis.ss.gate-type and
--redis.ss.gate-params (flags removed when the SS gate impl was
dropped). Any operator setting ap.redis.gateType would crashloop on
"flag provided but not defined". Removed the block, the matching
values.yaml defaults, the dead gateParamsJson helper, and the e2e
deploy values references.
P1 — SS gating landing-state inconsistency
WithGateFactory on RedisSortedSetFlow was stored-but-unread, main.go
logged "with per-queue gating", and README told users to switch to SS
for per-queue gating — all false (SS gates aren't wired). Removed
WithGateFactory + SortedSetOption + gateFactory field, dropped the
arg from main.go, fixed the log line, and corrected README to direct
operators at gcp-pubsub-gated for actual per-queue gating.
P2 — pubsub callback could block prefetch under saturation
The per-subscription channel was unbuffered, so under sustained
saturation a stalled merge goroutine propagated straight back to the
receive callback, halting Pub/Sub prefetch. Worse, ctx cancellation
mid-stall deadlocked the callback (Receive() never exits).
Buffered the channel to the same prefetch depth as Pub/Sub's
MaxOutstandingMessages (extracted prefetchBufferDepth helper) so the
callback is non-blocking up to the prefetch window. Wrapped the send
in select-with-ctx so shutdown unblocks and any subscription-gate
releases fire cleanly on cancel.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: joeltg <joel@reflection.ai>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -280,7 +280,7 @@ The configuration file when using the `redis.queues-config-file` flag should hav
280
280
]
281
281
```
282
282
283
-
<u>Note:</u>The ephemeral Redis Channels implementation does not support per-queue dispatch gates. Use the [Redis Sorted Set](#redis-sorted-set-persisted) implementation for per-queue gating.
283
+
<u>Note:</u>Per-queue / per-pool dispatch gates are currently only wired on the `gcp-pubsub-gated` flow. The Redis Channels and Redis Sorted Set flows do not yet apply gate chains.
0 commit comments