mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fixed peer info reports that had large last active values.
Also put in safety for lag going upside down as well. Signed-off-by: Derek Collison <derek@nats.io>
This commit is contained in:
@@ -4665,9 +4665,9 @@ func (js *jetStream) clusterInfo(rg *raftGroup) *ClusterInfo {
|
||||
|
||||
for _, rp := range peers {
|
||||
if rp.ID != id && rg.isMember(rp.ID) {
|
||||
lastSeen := now.Sub(rp.Last)
|
||||
if lastSeen < 0 {
|
||||
lastSeen = 1
|
||||
var lastSeen time.Duration
|
||||
if now.After(rp.Last) && rp.Last.Unix() != 0 {
|
||||
lastSeen = now.Sub(rp.Last)
|
||||
}
|
||||
current := rp.Current
|
||||
if current && lastSeen > lostQuorumInterval {
|
||||
|
||||
@@ -1904,6 +1904,38 @@ func TestNoRaceJetStreamClusterMirrorExpirationAndMissingSequences(t *testing.T)
|
||||
checkMirror(20)
|
||||
}
|
||||
|
||||
func TestNoRaceLargeActiveOnReplica(t *testing.T) {
|
||||
// Uncomment to run.
|
||||
skip(t)
|
||||
|
||||
c := createJetStreamClusterExplicit(t, "LAG", 3)
|
||||
defer c.shutdown()
|
||||
|
||||
// Client for API requests.
|
||||
nc, js := jsClientConnect(t, c.randomServer())
|
||||
defer nc.Close()
|
||||
|
||||
timeout := time.Now().Add(60 * time.Second)
|
||||
for time.Now().Before(timeout) {
|
||||
si, err := js.AddStream(&nats.StreamConfig{
|
||||
Name: "TEST",
|
||||
Subjects: []string{"foo", "bar"},
|
||||
Replicas: 3,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error: %v", err)
|
||||
}
|
||||
for _, r := range si.Cluster.Replicas {
|
||||
if r.Active > 5*time.Second {
|
||||
t.Fatalf("Bad Active value: %+v", r)
|
||||
}
|
||||
}
|
||||
if err := js.DeleteStream("TEST"); err != nil {
|
||||
t.Fatalf("Unexpected delete error: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoRaceJetStreamClusterSuperClusterRIPStress(t *testing.T) {
|
||||
// Uncomment to run. Needs to be on a big machine.
|
||||
skip(t)
|
||||
|
||||
@@ -1245,11 +1245,15 @@ func (n *raft) Peers() []*Peer {
|
||||
|
||||
var peers []*Peer
|
||||
for id, ps := range n.peers {
|
||||
var lag uint64
|
||||
if n.commit > ps.li {
|
||||
lag = n.commit - ps.li
|
||||
}
|
||||
p := &Peer{
|
||||
ID: id,
|
||||
Current: id == n.leader || ps.li >= n.applied,
|
||||
Last: time.Unix(0, ps.ts),
|
||||
Lag: n.commit - ps.li,
|
||||
Lag: lag,
|
||||
}
|
||||
peers = append(peers, p)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user