clientv3: use grpc reconnection logic
This commit is contained in:
@ -17,7 +17,6 @@ package clientv3
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
|
||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
@ -143,27 +142,17 @@ func (txn *txn) Commit() (*TxnResponse, error) {
|
||||
return resp, err
|
||||
}
|
||||
if isHaltErr(txn.ctx, err) {
|
||||
return nil, rpctypes.Error(err)
|
||||
return nil, toErr(txn.ctx, err)
|
||||
}
|
||||
if txn.isWrite {
|
||||
txn.kv.rc.reconnect(err)
|
||||
return nil, rpctypes.Error(err)
|
||||
}
|
||||
if nerr := txn.kv.rc.reconnectWait(txn.ctx, err); nerr != nil {
|
||||
return nil, nerr
|
||||
return nil, toErr(txn.ctx, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (txn *txn) commit() (*TxnResponse, error) {
|
||||
rem, rerr := txn.kv.getRemote(txn.ctx)
|
||||
if rerr != nil {
|
||||
return nil, rerr
|
||||
}
|
||||
defer txn.kv.rc.release()
|
||||
|
||||
r := &pb.TxnRequest{Compare: txn.cmps, Success: txn.sus, Failure: txn.fas}
|
||||
resp, err := rem.Txn(txn.ctx, r)
|
||||
resp, err := txn.kv.remote.Txn(txn.ctx, r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user