mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-17 11:24:44 -07:00
Better fix for flapping test - TestJetStreamClusterStaleReadsOnRestart (#4516)
Signed-off-by: Derek Collison <derek@nats.io>
This commit is contained in:
@@ -3642,8 +3642,13 @@ func (js *jetStream) processClusterCreateStream(acc *Account, sa *streamAssignme
|
||||
return
|
||||
}
|
||||
|
||||
// Re-capture node.
|
||||
js.mu.RLock()
|
||||
node := rg.node
|
||||
js.mu.RUnlock()
|
||||
|
||||
// Start our monitoring routine.
|
||||
if rg.node != nil {
|
||||
if node != nil {
|
||||
if !alreadyRunning {
|
||||
if mset != nil {
|
||||
mset.monitorWg.Add(1)
|
||||
|
||||
@@ -7095,25 +7095,31 @@ func TestJetStreamClusterStaleReadsOnRestart(t *testing.T) {
|
||||
|
||||
c.restartServer(sl)
|
||||
c.waitOnAllCurrent()
|
||||
c.waitOnStreamLeader("$G", "TEST")
|
||||
|
||||
// Allow the 3rd replica to be current.
|
||||
time.Sleep(250 * time.Millisecond)
|
||||
|
||||
// Grab expected from leader.
|
||||
var state StreamState
|
||||
for _, s := range c.servers {
|
||||
if s.Running() {
|
||||
mset, err := s.GlobalAccount().lookupStream("TEST")
|
||||
require_NoError(t, err)
|
||||
var fs StreamState
|
||||
mset.store.FastState(&fs)
|
||||
if state.FirstSeq == 0 {
|
||||
state = fs
|
||||
}
|
||||
if !reflect.DeepEqual(fs, state) {
|
||||
t.Fatalf("States do not match, exepected %+v but got %+v", state, fs)
|
||||
sl = c.streamLeader("$G", "TEST")
|
||||
mset, err := sl.GlobalAccount().lookupStream("TEST")
|
||||
require_NoError(t, err)
|
||||
mset.store.FastState(&state)
|
||||
|
||||
checkFor(t, 10*time.Second, 200*time.Millisecond, func() error {
|
||||
for _, s := range c.servers {
|
||||
if s.Running() {
|
||||
mset, err := s.GlobalAccount().lookupStream("TEST")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var fs StreamState
|
||||
mset.store.FastState(&fs)
|
||||
if !reflect.DeepEqual(fs, state) {
|
||||
return fmt.Errorf("States do not match, expected %+v but got %+v", state, fs)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func TestJetStreamClusterReplicasChangeStreamInfo(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user