Skip to content

Commit

Permalink
Merge pull request #3986 from nats-io/neil/shutdownraftgroups
Browse files Browse the repository at this point in the history
Shut down RAFT groups when disabling JetStream
  • Loading branch information
derekcollison committed Mar 23, 2023
2 parents 61556d9 + 8d55193 commit 57daeda
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
3 changes: 3 additions & 0 deletions server/jetstream.go
Expand Up @@ -578,6 +578,9 @@ func (s *Server) DisableJetStream() error {
// Normal shutdown.
s.shutdownJetStream()

// Shut down the RAFT groups.
s.shutdownRaftNodes()

return nil
}

Expand Down
39 changes: 39 additions & 0 deletions server/jetstream_cluster_3_test.go
Expand Up @@ -3364,3 +3364,42 @@ func TestNoRaceJetStreamClusterDifferentRTTInterestBasedStreamPreAck(t *testing.
})

}

func TestJetStreamInterestLeakOnDisableJetStream(t *testing.T) {
c := createJetStreamClusterExplicit(t, "R3S", 3)
defer c.shutdown()

nc, js := jsClientConnect(t, c.leader())
defer nc.Close()

for i := 1; i <= 5; i++ {
_, err := js.AddStream(&nats.StreamConfig{
Name: fmt.Sprintf("test_%d", i),
Subjects: []string{fmt.Sprintf("test_%d", i)},
Replicas: 3,
})
require_NoError(t, err)
}

c.waitOnAllCurrent()

server := c.randomNonLeader()
account := server.SystemAccount()

server.DisableJetStream()

var sublist []*subscription
account.sl.localSubs(&sublist, false)

var danglingJSC, danglingRaft int
for _, sub := range sublist {
if strings.HasPrefix(string(sub.subject), "$JSC.") {
danglingJSC++
} else if strings.HasPrefix(string(sub.subject), "$NRG.") {
danglingRaft++
}
}
if danglingJSC > 0 || danglingRaft > 0 {
t.Fatalf("unexpected dangling interests for JetStream assets after shutdown (%d $JSC, %d $NRG)", danglingJSC, danglingRaft)
}
}

0 comments on commit 57daeda

Please sign in to comment.