diff --git a/server/jetstream_test.go b/server/jetstream_test.go index 3264b5e1..85bd125b 100644 --- a/server/jetstream_test.go +++ b/server/jetstream_test.go @@ -12551,6 +12551,33 @@ func TestJetStreamConsumerPendingBugWithKV(t *testing.T) { } } +// Issue #2420 +func TestJetStreamDefaultMaxMsgsPer(t *testing.T) { + s := RunBasicJetStreamServer() + defer s.Shutdown() + + if config := s.JetStreamConfig(); config != nil { + defer removeDir(t, config.StoreDir) + } + + // Client for API requests. + nc, js := jsClientConnect(t, s) + defer nc.Close() + + si, err := js.AddStream(&nats.StreamConfig{ + Name: "TEST", + Subjects: []string{"foo.*"}, + Storage: nats.MemoryStorage, + MaxMsgs: 10, + }) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if si.Config.MaxMsgsPerSubject != -1 { + t.Fatalf("Expected default of -1, got %d", si.Config.MaxMsgsPerSubject) + } +} + /////////////////////////////////////////////////////////////////////////// // Simple JetStream Benchmarks /////////////////////////////////////////////////////////////////////////// diff --git a/server/stream.go b/server/stream.go index 3a48745b..1bf21886 100644 --- a/server/stream.go +++ b/server/stream.go @@ -773,6 +773,9 @@ func checkStreamCfg(config *StreamConfig) (StreamConfig, error) { if cfg.MaxMsgs == 0 { cfg.MaxMsgs = -1 } + if cfg.MaxMsgsPer == 0 { + cfg.MaxMsgsPer = -1 + } if cfg.MaxBytes == 0 { cfg.MaxBytes = -1 }