diff --git a/etcdserver/api/etcdhttp/peer.go b/etcdserver/api/etcdhttp/peer.go index 0a9213b01..6b533730a 100644 --- a/etcdserver/api/etcdhttp/peer.go +++ b/etcdserver/api/etcdhttp/peer.go @@ -22,6 +22,8 @@ import ( "github.com/coreos/etcd/etcdserver/api" "github.com/coreos/etcd/lease/leasehttp" "github.com/coreos/etcd/rafthttp" + + "go.uber.org/zap" ) const ( @@ -29,12 +31,13 @@ const ( ) // NewPeerHandler generates an http.Handler to handle etcd peer requests. -func NewPeerHandler(s etcdserver.ServerPeer) http.Handler { - return newPeerHandler(s.Cluster(), s.RaftHandler(), s.LeaseHandler()) +func NewPeerHandler(lg *zap.Logger, s etcdserver.ServerPeer) http.Handler { + return newPeerHandler(lg, s.Cluster(), s.RaftHandler(), s.LeaseHandler()) } -func newPeerHandler(cluster api.Cluster, raftHandler http.Handler, leaseHandler http.Handler) http.Handler { +func newPeerHandler(lg *zap.Logger, cluster api.Cluster, raftHandler http.Handler, leaseHandler http.Handler) http.Handler { mh := &peerMembersHandler{ + lg: lg, cluster: cluster, } @@ -52,6 +55,7 @@ func newPeerHandler(cluster api.Cluster, raftHandler http.Handler, leaseHandler } type peerMembersHandler struct { + lg *zap.Logger cluster api.Cluster } @@ -68,6 +72,10 @@ func (h *peerMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ms := h.cluster.Members() w.Header().Set("Content-Type", "application/json") if err := json.NewEncoder(w).Encode(ms); err != nil { - plog.Warningf("failed to encode members response (%v)", err) + if h.lg != nil { + h.lg.Warn("failed to encode membership members", zap.Error(err)) + } else { + plog.Warningf("failed to encode members response (%v)", err) + } } } diff --git a/etcdserver/api/etcdhttp/peer_test.go b/etcdserver/api/etcdhttp/peer_test.go index 40dbef8ae..ad48f1478 100644 --- a/etcdserver/api/etcdhttp/peer_test.go +++ b/etcdserver/api/etcdhttp/peer_test.go @@ -23,6 +23,8 @@ import ( "sort" "testing" + "go.uber.org/zap" + "github.com/coreos/etcd/etcdserver/membership" "github.com/coreos/etcd/pkg/testutil" "github.com/coreos/etcd/pkg/types" @@ -55,7 +57,7 @@ func TestNewPeerHandlerOnRaftPrefix(t *testing.T) { h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("test data")) }) - ph := newPeerHandler(&fakeCluster{}, h, nil) + ph := newPeerHandler(zap.NewExample(), &fakeCluster{}, h, nil) srv := httptest.NewServer(ph) defer srv.Close()