Browse Source

feat attach etcd-index,raft-index,raft-term to header

Xiang Li 12 years ago
parent
commit
d8e5994c35
3 changed files with 10 additions and 2 deletions
  1. 7 0
      server/server.go
  2. 3 1
      server/v2/get_handler.go
  3. 0 1
      store/node.go

+ 7 - 0
server/server.go

@@ -225,6 +225,7 @@ func (s *Server) Close() {
 	}
 }
 
+// Dispatch command to the current leader
 func (s *Server) Dispatch(c raft.Command, w http.ResponseWriter, req *http.Request) error {
 	ps := s.peerServer
 	if ps.raftServer.State() == raft.Leader {
@@ -252,6 +253,12 @@ func (s *Server) Dispatch(c raft.Command, w http.ResponseWriter, req *http.Reque
 			e, _ := result.(*store.Event)
 			b, _ = json.Marshal(e)
 
+			// etcd index should be the same as the event index
+			// which is also the last modified index of the node
+			w.Header().Add("X-Etcd-Index", fmt.Sprint(e.Index))
+			w.Header().Add("X-Raft-Index", fmt.Sprint(s.CommitIndex()))
+			w.Header().Add("X-Raft-Term", fmt.Sprint(s.Term()))
+
 			if e.IsCreated() {
 				w.WriteHeader(http.StatusCreated)
 			} else {

+ 3 - 1
server/v2/get_handler.go

@@ -68,7 +68,9 @@ func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error {
 		}
 	}
 
-	w.Header().Add("X-Etcd-Index", fmt.Sprint(event.Index))
+	w.Header().Add("X-Etcd-Index", fmt.Sprint(s.Store().Index()))
+	w.Header().Add("X-Raft-Index", fmt.Sprint(s.CommitIndex()))
+	w.Header().Add("X-Raft-Term", fmt.Sprint(s.Term()))
 	w.WriteHeader(http.StatusOK)
 	b, _ := json.Marshal(event)
 

+ 0 - 1
store/node.go

@@ -17,7 +17,6 @@ type Node struct {
 	Path string
 
 	CreateIndex   uint64
-	CreateTerm    uint64
 	ModifiedIndex uint64
 
 	Parent *Node `json:"-"` // should not encode this field! avoid circular dependency.