diff --git a/etcdserver/etcdhttp/http.go b/etcdserver/etcdhttp/http.go index 4733497c4..b5be1110b 100644 --- a/etcdserver/etcdhttp/http.go +++ b/etcdserver/etcdhttp/http.go @@ -122,8 +122,7 @@ func (h serverHandler) serveKeys(w http.ResponseWriter, r *http.Request) { switch { case resp.Event != nil: - ev := trimEventPrefix(resp.Event, etcdserver.StoreKeysPrefix) - if err := writeEvent(w, ev, h.timer); err != nil { + if err := writeKeyEvent(w, resp.Event, h.timer); err != nil { // Should never be reached log.Printf("error writing event: %v", err) } @@ -427,10 +426,10 @@ func writeError(w http.ResponseWriter, err error) { } } -// writeEvent serializes a single Event and writes the resulting -// JSON to the given ResponseWriter, along with the appropriate -// headers -func writeEvent(w http.ResponseWriter, ev *store.Event, rt etcdserver.RaftTimer) error { +// writeKeyEvent trims the prefix of key path in a single Event under +// StoreKeysPrefix, serializes it and writes the resulting JSON to the given +// ResponseWriter, along with the appropriate headers. +func writeKeyEvent(w http.ResponseWriter, ev *store.Event, rt etcdserver.RaftTimer) error { if ev == nil { return errors.New("cannot write empty Event!") } @@ -443,6 +442,7 @@ func writeEvent(w http.ResponseWriter, ev *store.Event, rt etcdserver.RaftTimer) w.WriteHeader(http.StatusCreated) } + ev = trimEventPrefix(ev, etcdserver.StoreKeysPrefix) return json.NewEncoder(w).Encode(ev) } diff --git a/etcdserver/etcdhttp/http_test.go b/etcdserver/etcdhttp/http_test.go index 98dac7023..659aa71ff 100644 --- a/etcdserver/etcdhttp/http_test.go +++ b/etcdserver/etcdhttp/http_test.go @@ -526,7 +526,7 @@ func (drt dummyRaftTimer) Term() uint64 { return uint64(5) } func TestWriteEvent(t *testing.T) { // nil event should not panic rw := httptest.NewRecorder() - writeEvent(rw, nil, dummyRaftTimer{}) + writeKeyEvent(rw, nil, dummyRaftTimer{}) h := rw.Header() if len(h) > 0 { t.Fatalf("unexpected non-empty headers: %#v", h) @@ -569,7 +569,7 @@ func TestWriteEvent(t *testing.T) { for i, tt := range tests { rw := httptest.NewRecorder() - writeEvent(rw, tt.ev, dummyRaftTimer{}) + writeKeyEvent(rw, tt.ev, dummyRaftTimer{}) if gct := rw.Header().Get("Content-Type"); gct != "application/json" { t.Errorf("case %d: bad Content-Type: got %q, want application/json", i, gct) }