Quellcode durchsuchen

etcdserver: handle raft Propose error in v2 applier

Handle "raft.ErrProposalDropped" as in v3 applier.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
Gyuho Lee vor 7 Jahren
Ursprung
Commit
b38e138baf
1 geänderte Dateien mit 6 neuen und 1 gelöschten Zeilen
  1. 6 1
      etcdserver/v2_server.go

+ 6 - 1
etcdserver/v2_server.go

@@ -101,7 +101,12 @@ func (a *reqV2HandlerEtcdServer) processRaftRequest(ctx context.Context, r *Requ
 	ch := a.s.w.Register(r.ID)
 
 	start := time.Now()
-	a.s.r.Propose(ctx, data)
+	err = a.s.r.Propose(ctx, data)
+	if err != nil {
+		proposalsFailed.Inc()
+		a.s.w.Trigger(r.ID, nil)
+		return Response{}, err
+	}
 	proposalsPending.Inc()
 	defer proposalsPending.Dec()