diff --git a/server/server.go b/server/server.go index efd531208..6478aeb5b 100644 --- a/server/server.go +++ b/server/server.go @@ -260,7 +260,7 @@ func (s *Server) Dispatch(c raft.Command, w http.ResponseWriter, req *http.Reque var b []byte if strings.HasPrefix(req.URL.Path, "/v1") { - b, _ = json.Marshal(result.(*store.Event).Response()) + b, _ = json.Marshal(result.(*store.Event).Response(0)) w.WriteHeader(http.StatusOK) } else { e, _ := result.(*store.Event) diff --git a/server/v1/get_key_handler.go b/server/v1/get_key_handler.go index 880bf289e..5a5777ac8 100644 --- a/server/v1/get_key_handler.go +++ b/server/v1/get_key_handler.go @@ -19,7 +19,8 @@ func GetKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { } // Convert event to a response and write to client. - b, _ := json.Marshal(event.Response()) + b, _ := json.Marshal(event.Response(s.Store().Index())) + w.WriteHeader(http.StatusOK) w.Write(b) diff --git a/server/v1/watch_key_handler.go b/server/v1/watch_key_handler.go index de5ed0656..67a0c5f04 100644 --- a/server/v1/watch_key_handler.go +++ b/server/v1/watch_key_handler.go @@ -31,7 +31,8 @@ func WatchKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { } event := <-c - b, _ := json.Marshal(event.Response()) + // Convert event to a response and write to client. + b, _ := json.Marshal(event.Response(s.Store().Index())) w.WriteHeader(http.StatusOK) w.Write(b) diff --git a/store/event.go b/store/event.go index 6a379985b..120f01e71 100644 --- a/store/event.go +++ b/store/event.go @@ -45,7 +45,7 @@ func (e *Event) Index() uint64 { } // Converts an event object into a response object. -func (event *Event) Response() interface{} { +func (event *Event) Response(currentIndex uint64) interface{} { if !event.Node.Dir { response := &Response{ Action: event.Action, @@ -57,6 +57,10 @@ func (event *Event) Response() interface{} { Expiration: event.Node.Expiration, } + if currentIndex != 0 { + response.Index = currentIndex + } + if response.Action == Set { if response.PrevValue == "" { response.NewKey = true @@ -79,6 +83,10 @@ func (event *Event) Response() interface{} { Dir: node.Dir, Index: node.ModifiedIndex, } + + if currentIndex != 0 { + responses[i].Index = currentIndex + } } return responses }