diff --git a/internal/broker/seattraffic.go b/internal/broker/seattraffic.go index 5b68ca20..ad2bffe4 100644 --- a/internal/broker/seattraffic.go +++ b/internal/broker/seattraffic.go @@ -157,7 +157,7 @@ func SeatTrafficOf(module string, holds, uses, watches []Seat) SeatTraffic { // DeadLetterReads is what a user of a seat pulled by kind is granted to hear which of the asks it put the seat's workers // gave up on (novox/hq issue 734): an ordered consumer on DEAD_LETTERS filtered to the copies the controller keeps of that -// seat's stream (DeadLetterSubject(stream, *)), pulled or pushed, its deletion and its flow control. A copy carries the ask's own message id +// seat's stream (DeadLetterSubject(stream, *)), pulled, and its deletion. A copy carries the ask's own message id // (Mesh-Dead-Msg-Id), so the asker ends the step it waits for instead of waiting for ever; it reads the seat's dead // letters and no other stream's, and changes none. func DeadLetterReads(stream string) []string { @@ -165,8 +165,7 @@ func DeadLetterReads(stream string) []string { "$JS.API.STREAM.INFO." + DeadLettersStream, "$JS.API.CONSUMER.CREATE." + DeadLettersStream + ".*." + DeadLetterSubject(stream, ">"), "$JS.API.CONSUMER.MSG.NEXT." + DeadLettersStream + ".*", - "$JS.API.CONSUMER.DELETE." + DeadLettersStream + ".>", - "$JS.FC." + DeadLettersStream + ".>", + "$JS.API.CONSUMER.DELETE." + DeadLettersStream + ".*", } } diff --git a/internal/broker/seattraffic_test.go b/internal/broker/seattraffic_test.go index 8f98305f..01b8a1d9 100644 --- a/internal/broker/seattraffic_test.go +++ b/internal/broker/seattraffic_test.go @@ -410,6 +410,7 @@ func TestTheBuilderMayAskABuildSeatAndASessionMayNot(t *testing.T) { "$JS.API.CONSUMER.MSG.NEXT.DEAD_LETTERS.x1": true, "$JS.API.CONSUMER.CREATE.DEAD_LETTERS.x1.mesh.events.dead.EVENTS.>": false, "$JS.API.STREAM.PURGE.DEAD_LETTERS": false, + "$JS.FC.DEAD_LETTERS.x1": false, } { if got := allowed(builder.Publish, subject); got != want { t.Errorf("the builder may publish %s: %v, want %v", subject, got, want)