Prechádzať zdrojové kódy

etcdserver: handle proposal error when processing internal raft request

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
nolouch 7 rokov pred
rodič
commit
3c52342b37
1 zmenil súbory, kde vykonal 6 pridanie a 1 odobranie
  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()