store/tikv: export LockResolver. (#3585)
This commit is contained in:
@ -15,11 +15,13 @@ package tikv
|
||||
|
||||
import (
|
||||
"container/list"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/juju/errors"
|
||||
"github.com/ngaut/log"
|
||||
"github.com/pingcap/kvproto/pkg/kvrpcpb"
|
||||
"github.com/pingcap/pd/pd-client"
|
||||
"github.com/pingcap/tidb/store/tikv/tikvrpc"
|
||||
goctx "golang.org/x/net/context"
|
||||
)
|
||||
@ -46,6 +48,22 @@ func newLockResolver(store *tikvStore) *LockResolver {
|
||||
return r
|
||||
}
|
||||
|
||||
// NewLockResolver creates a LockResolver.
|
||||
// It is exported for other services to use. For instance, binlog service needs
|
||||
// to determine a transaction's commit state.
|
||||
func NewLockResolver(etcdAddrs []string) (*LockResolver, error) {
|
||||
pdCli, err := pd.NewClient(etcdAddrs)
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
uuid := fmt.Sprintf("tikv-%v", pdCli.GetClusterID(goctx.TODO()))
|
||||
s, err := newTikvStore(uuid, &codecPDClient{pdCli}, newRPCClient(), false)
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
return s.lockResolver, nil
|
||||
}
|
||||
|
||||
// TxnStatus represents a txn's final status. It should be Commit or Rollback.
|
||||
type TxnStatus uint64
|
||||
|
||||
|
||||
Reference in New Issue
Block a user