clientv3: use grpc reconnection logic

This commit is contained in:
Anthony Romano
2016-06-07 17:03:48 -07:00
parent 1823702cc6
commit 62f8ec25c0
15 changed files with 171 additions and 594 deletions

View File

@ -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
}