浏览代码

etcdserver: skip noop entry in apply

xiaost 10 年之前
父节点
当前提交
cab1e9a723
共有 1 个文件被更改,包括 5 次插入0 次删除
  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))