diff --git a/tools/functional-tester/etcd-tester/http.go b/tools/functional-tester/etcd-tester/http.go index 3d52971e3..e77d2c026 100644 --- a/tools/functional-tester/etcd-tester/http.go +++ b/tools/functional-tester/etcd-tester/http.go @@ -26,8 +26,19 @@ type statusHandler struct { func (sh statusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") en := json.NewEncoder(w) - err := en.Encode(sh.status.get()) - if err != nil { + + sh.status.mu.Lock() + defer sh.status.mu.Unlock() + + if err := en.Encode(Status{ + Since: sh.status.Since, + Failures: sh.status.Failures, + RoundLimit: sh.status.RoundLimit, + Cluster: sh.status.cluster.Status(), + cluster: sh.status.cluster, + Round: sh.status.Round, + Case: sh.status.Case, + }); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } diff --git a/tools/functional-tester/etcd-tester/tester.go b/tools/functional-tester/etcd-tester/tester.go index d0213d195..a82bb6860 100644 --- a/tools/functional-tester/etcd-tester/tester.go +++ b/tools/functional-tester/etcd-tester/tester.go @@ -208,16 +208,6 @@ type Status struct { Case int } -// get gets a copy of status -func (s *Status) get() Status { - s.mu.Lock() - got := *s - cluster := s.cluster - s.mu.Unlock() - got.Cluster = cluster.Status() - return got -} - func (s *Status) setRound(r int) { s.mu.Lock() defer s.mu.Unlock()