diff --git a/server/filestore.go b/server/filestore.go index 211857e9..7ba7e2eb 100644 --- a/server/filestore.go +++ b/server/filestore.go @@ -5098,7 +5098,8 @@ func (fs *fileStore) PurgeEx(subject string, sequence, keep uint64) (purged uint if mb.isEmpty() { fs.removeMsgBlock(mb) i-- - firstSeqNeedsUpdate = seq == fs.state.FirstSeq + // keep flag set, if set previously + firstSeqNeedsUpdate = firstSeqNeedsUpdate || seq == fs.state.FirstSeq } else if seq == fs.state.FirstSeq { fs.state.FirstSeq = mb.first.seq // new one. fs.state.FirstTime = time.Unix(0, mb.first.ts).UTC() diff --git a/server/filestore_test.go b/server/filestore_test.go index e3050018..984ff671 100644 --- a/server/filestore_test.go +++ b/server/filestore_test.go @@ -4020,6 +4020,7 @@ func TestFileStorePurgeExWithSubject(t *testing.T) { require_True(t, int(p) == total) require_True(t, int(p) == total) require_True(t, fs.State().Msgs == 1) + require_True(t, fs.State().FirstSeq == 201) }) }