From 4a4ad7f4e2c9569844ad2dbba852eb12e968836c Mon Sep 17 00:00:00 2001 From: Ivan Kozlovic Date: Fri, 5 Mar 2021 11:40:42 -0700 Subject: [PATCH] [FIXED] Added missing cluster node ID in serverz endpoint Resolves #1166 Signed-off-by: Ivan Kozlovic --- server/monitor.go | 4 ++++ server/monitor_test.go | 13 ++++++++++++- server/server_redelivery_test.go | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/monitor.go b/server/monitor.go index dd483ba6..e088f9aa 100644 --- a/server/monitor.go +++ b/server/monitor.go @@ -49,6 +49,7 @@ type Serverz struct { GoVersion string `json:"go"` State string `json:"state"` Role string `json:"role,omitempty"` + NodeID string `json:"node_id,omitempty"` Now time.Time `json:"now"` Start time.Time `json:"start_time"` Uptime string `json:"uptime"` @@ -198,10 +199,12 @@ func (s *StanServer) handleServerz(w http.ResponseWriter, r *http.Request) { return } var role string + var nodeID string s.mu.RLock() state := s.state if s.raft != nil { role = s.raft.State().String() + nodeID = s.info.NodeID } s.mu.RUnlock() @@ -231,6 +234,7 @@ func (s *StanServer) handleServerz(w http.ResponseWriter, r *http.Request) { GoVersion: runtime.Version(), State: state.String(), Role: role, + NodeID: nodeID, Now: now, Start: s.startTime, Uptime: myUptime(now.Sub(s.startTime)), diff --git a/server/monitor_test.go b/server/monitor_test.go index 8f0c3e19..86ffc14c 100644 --- a/server/monitor_test.go +++ b/server/monitor_test.go @@ -1250,7 +1250,7 @@ func TestMonitorClusterRole(t *testing.T) { s2 := runServerWithOpts(t, s2sOpts, test.n2Opts) defer s2.Shutdown() - getLeader(t, 10*time.Second, s1, s2) + l := getLeader(t, 10*time.Second, s1, s2) resp, body := getBody(t, ServerPath, expectedJSON) resp.Body.Close() @@ -1261,6 +1261,17 @@ func TestMonitorClusterRole(t *testing.T) { if sz.Role != test.expectedRole { t.Fatalf("Expected role to be %v, got %v", test.expectedRole, sz.Role) } + var nodeID string + if test.name == "leader" { + nodeID = l.info.NodeID + } else if l == s1 { + nodeID = s2.info.NodeID + } else { + nodeID = s1.info.NodeID + } + if sz.NodeID != nodeID { + t.Fatalf("Expected nodeID to be %q, got %q", nodeID, sz.NodeID) + } }) } } diff --git a/server/server_redelivery_test.go b/server/server_redelivery_test.go index 041df7b0..0998b44c 100644 --- a/server/server_redelivery_test.go +++ b/server/server_redelivery_test.go @@ -17,6 +17,7 @@ import ( "encoding/json" "fmt" "net" + "runtime" "strings" "sync" "sync/atomic" @@ -114,6 +115,10 @@ func TestMultipleRedeliveries(t *testing.T) { ackWait := int64(15 * time.Millisecond) lowBound := int64(float64(ackWait) * 0.5) highBound := int64(float64(ackWait) * 1.7) + // On Windows (especially Travis), be more generous + if runtime.GOOS == "windows" { + highBound = int64(35 * time.Millisecond) + } errCh := make(chan error) cb := func(m *stan.Msg) { now := time.Now().UnixNano()