mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fix for a peer-remove of an R1 that would brick the stream.
Signed-off-by: Derek Collison <derek@nats.io>
This commit is contained in:
@@ -4016,3 +4016,34 @@ func TestJetStreamSuperClusterMovingR1Stream(t *testing.T) {
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// https://github.com/nats-io/nats-server/issues/4396
|
||||
func TestJetStreamSuperClusterR1StreamPeerRemove(t *testing.T) {
|
||||
sc := createJetStreamSuperCluster(t, 1, 3)
|
||||
defer sc.shutdown()
|
||||
|
||||
nc, js := jsClientConnect(t, sc.serverByName("C1-S1"))
|
||||
defer nc.Close()
|
||||
|
||||
_, err := js.AddStream(&nats.StreamConfig{
|
||||
Name: "TEST",
|
||||
Subjects: []string{"foo"},
|
||||
Replicas: 1,
|
||||
})
|
||||
require_NoError(t, err)
|
||||
|
||||
si, err := js.StreamInfo("TEST")
|
||||
require_NoError(t, err)
|
||||
|
||||
// Call peer remove on the only peer the leader.
|
||||
resp, err := nc.Request(fmt.Sprintf(JSApiStreamRemovePeerT, "TEST"), []byte(`{"peer":"`+si.Cluster.Leader+`"}`), time.Second)
|
||||
require_NoError(t, err)
|
||||
var rpr JSApiStreamRemovePeerResponse
|
||||
require_NoError(t, json.Unmarshal(resp.Data, &rpr))
|
||||
require_False(t, rpr.Success)
|
||||
require_True(t, rpr.Error.ErrCode == 10075)
|
||||
|
||||
// Stream should still be in place and useable.
|
||||
_, err = js.StreamInfo("TEST")
|
||||
require_NoError(t, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user