@@ -8004,6 +8004,70 @@ func TestJetStreamClusterUpgradeConsumerVersioning(t *testing.T) {
8004
8004
}
8005
8005
}
8006
8006
8007
+ func TestJetStreamClusterInterestPolicyAckAll (t * testing.T ) {
8008
+ c := createJetStreamClusterExplicit (t , "R3S" , 3 )
8009
+ defer c .shutdown ()
8010
+
8011
+ nc , js := jsClientConnect (t , c .randomServer ())
8012
+ defer nc .Close ()
8013
+
8014
+ _ , err := js .AddStream (& nats.StreamConfig {
8015
+ Name : "TEST" ,
8016
+ Retention : nats .InterestPolicy ,
8017
+ Subjects : []string {"foo" },
8018
+ Replicas : 3 ,
8019
+ })
8020
+ require_NoError (t , err )
8021
+
8022
+ _ , err = js .AddConsumer ("TEST" , & nats.ConsumerConfig {
8023
+ Durable : "CONSUMER" ,
8024
+ AckPolicy : nats .AckAllPolicy ,
8025
+ })
8026
+ require_NoError (t , err )
8027
+
8028
+ for i := 0 ; i < 100 ; i ++ {
8029
+ _ , err = js .Publish ("foo" , []byte ("ok" ))
8030
+ require_NoError (t , err )
8031
+ }
8032
+
8033
+ expectedStreamMsgs := func (msgs uint64 ) {
8034
+ t .Helper ()
8035
+ checkFor (t , 2 * time .Second , 200 * time .Millisecond , func () error {
8036
+ si , err := js .StreamInfo ("TEST" )
8037
+ if err != nil {
8038
+ return err
8039
+ }
8040
+ if si .State .Msgs != msgs {
8041
+ return fmt .Errorf ("require uint64 equal, but got: %d != %d" , si .State .Msgs , msgs )
8042
+ }
8043
+ return nil
8044
+ })
8045
+ }
8046
+ expectedStreamMsgs (100 )
8047
+
8048
+ for _ , s := range c .servers {
8049
+ acc , err := s .lookupAccount (globalAccountName )
8050
+ require_NoError (t , err )
8051
+ mset , err := acc .lookupStream ("TEST" )
8052
+ require_NoError (t , err )
8053
+ o := mset .lookupConsumer ("CONSUMER" )
8054
+ require_NotNil (t , o )
8055
+ o .mu .Lock ()
8056
+ // Ensure o.checkStateForInterestStream can't hide that the issue happened.
8057
+ o .chkflr = 1000
8058
+ o .mu .Unlock ()
8059
+ }
8060
+
8061
+ sub , err := js .PullSubscribe ("foo" , "CONSUMER" )
8062
+ require_NoError (t , err )
8063
+ msgs , err := sub .Fetch (50 )
8064
+ require_NoError (t , err )
8065
+ require_True (t , len (msgs ) == 50 )
8066
+ require_NoError (t , msgs [49 ].AckSync ())
8067
+
8068
+ expectedStreamMsgs (50 )
8069
+ }
8070
+
8007
8071
//
8008
8072
// DO NOT ADD NEW TESTS IN THIS FILE (unless to balance test times)
8009
8073
// Add at the end of jetstream_cluster_<n>_test.go, with <n> being the highest value.
0 commit comments