[FIXED] JetStream: consumer with deliver new may miss messages

This could happen when a consumer had not sent anything to the
attached NATS subscription and there was a consumer leader
step down or server restart.

Signed-off-by: Derek Collison <derek@nats.io>
This commit is contained in:
Ivan Kozlovic
2022-05-20 10:08:35 -06:00
parent 65094c4ee4
commit 53e3c53d96
12 changed files with 245 additions and 85 deletions

View File

@@ -1569,7 +1569,7 @@ func TestJetStreamSuperClusterConsumerDeliverNewBug(t *testing.T) {
require_NoError(t, err)
// Put messages in..
num := 200
num := 100
for i := 0; i < num; i++ {
js.PublishAsync("T", []byte("OK"))
}
@@ -1586,7 +1586,7 @@ func TestJetStreamSuperClusterConsumerDeliverNewBug(t *testing.T) {
})
require_NoError(t, err)
if ci.Delivered.Consumer != 0 || ci.Delivered.Stream != 200 {
if ci.Delivered.Consumer != 0 || ci.Delivered.Stream != 100 {
t.Fatalf("Incorrect consumer delivered info: %+v", ci.Delivered)
}
@@ -1603,7 +1603,7 @@ func TestJetStreamSuperClusterConsumerDeliverNewBug(t *testing.T) {
ci, err = js.ConsumerInfo("T", "d")
require_NoError(t, err)
if ci.Delivered.Consumer != 0 || ci.Delivered.Stream != 200 {
if ci.Delivered.Consumer != 0 || ci.Delivered.Stream != 100 {
t.Fatalf("Incorrect consumer delivered info: %+v", ci.Delivered)
}
if ci.NumPending != 0 {