store/tikv: export LockResolver. (#3585)

This commit is contained in:
disksing
2017-06-30 16:30:21 +08:00
committed by Han Fei
parent 3ea6a4a0f7
commit e440ec77ea

View File

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