瀏覽代碼

etcdserver: handle proposal error when processing internal raft request

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
nolouch 7 年之前
父節點
當前提交
3c52342b37
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      etcdserver/v3_server.go

+ 6 - 1
etcdserver/v3_server.go

@@ -582,7 +582,12 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In
 	defer cancel()
 
 	start := time.Now()
-	s.r.Propose(cctx, data)
+	err = s.r.Propose(cctx, data)
+	if err != nil {
+		proposalsFailed.Inc()
+		s.w.Trigger(id, nil) // GC wait
+		return nil, err
+	}
 	proposalsPending.Inc()
 	defer proposalsPending.Dec()