From 1e2bba4c7beec050671243e010be06c67c1a9212 Mon Sep 17 00:00:00 2001 From: Maurice van Veen Date: Wed, 12 Apr 2023 10:46:16 +0200 Subject: [PATCH] Fix FirstSeq not being updated with filestore when purging subject --- server/filestore.go | 3 ++- server/filestore_test.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) 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) }) }