From cab1e9a723b91b6ebb68af09d7fdf11240f1bedc Mon Sep 17 00:00:00 2001 From: xiaost Date: Mon, 20 Apr 2015 17:49:54 +0800 Subject: [PATCH] etcdserver: skip noop entry in apply --- etcdserver/server.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etcdserver/server.go b/etcdserver/server.go index 1f5ce654a..54b187163 100644 --- a/etcdserver/server.go +++ b/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))