greatsharp commented on issue #321:
URL: 
https://github.com/apache/kvrocks-controller/issues/321#issuecomment-4402884114

   Checked the etcd server method 
'[processInternalRaftRequestOnce](https://github.com/etcd-io/etcd/blob/v3.6.11/server/etcdserver/v3_server.go#L836)'
   
   the select logic after Propose is needed in kvrocks-controller
   
   `id := r.ID
        if id == 0 {
                id = r.Header.ID
        }
        ch := s.w.Register(id)
   
        cctx, cancel := context.WithTimeout(ctx, s.Cfg.ReqTimeout())
        defer cancel()
   
        start := time.Now()
        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()
   
        select {
        case x := <-ch:
                return x.(*apply2.Result), nil
        case <-cctx.Done():
                proposalsFailed.Inc()
                s.w.Trigger(id, nil) // GC wait
                return nil, s.parseProposeCtxErr(cctx.Err(), start)
        case <-s.done:
                return nil, errors.ErrStopped
        }`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to