Browse Source

etcdserver: skip noop entry in apply

xiaost 10 years ago
parent
commit
cab1e9a723
1 changed files with 5 additions and 0 deletions
  1. 5 0
      etcdserver/server.go

+ 5 - 0
etcdserver/server.go

@@ -669,6 +669,11 @@ func (s *EtcdServer) apply(es []raftpb.Entry, confState *raftpb.ConfState) (uint
 		e := es[i]
 		switch e.Type {
 		case raftpb.EntryNormal:
+			// raft state machine may generate noop entry when leader confirmation.
+			// skip it in advance to avoid some potential bug in the future
+			if len(e.Data) == 0 {
+				break
+			}
 			var r pb.Request
 			pbutil.MustUnmarshal(&r, e.Data)
 			s.w.Trigger(r.ID, s.applyRequest(r))