diff --git a/README.md b/README.md index 786f34727c..1b67dd4e43 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ public class Main { public static void main() { // You MUST create a raw configuration if you are using RawKVClient. TiConfiguration conf = TiConfiguration.createRawDefault(YOUR_PD_ADDRESSES); - TiSession session = TiSession.getInstance(conf); + TiSession session = TiSession.create(conf); RawKVClient = session.createRawKVClient(); } } diff --git a/src/main/java/org/tikv/common/Snapshot.java b/src/main/java/org/tikv/common/Snapshot.java index b71460f232..ad3c823003 100644 --- a/src/main/java/org/tikv/common/Snapshot.java +++ b/src/main/java/org/tikv/common/Snapshot.java @@ -40,12 +40,10 @@ import org.tikv.kvproto.Kvrpcpb.KvPair; public class Snapshot { private final TiTimestamp timestamp; private final TiSession session; - private final TiConfiguration conf; - public Snapshot(@Nonnull TiTimestamp timestamp, TiConfiguration conf) { + public Snapshot(@Nonnull TiTimestamp timestamp, TiSession session) { this.timestamp = timestamp; - this.conf = conf; - this.session = TiSession.getInstance(conf); + this.session = session; } public TiSession getSession() { @@ -175,6 +173,6 @@ public class Snapshot { } public TiConfiguration getConf() { - return conf; + return this.session.getConf(); } } diff --git a/src/main/java/org/tikv/common/TiSession.java b/src/main/java/org/tikv/common/TiSession.java index f28eea782e..5495a6ddd6 100644 --- a/src/main/java/org/tikv/common/TiSession.java +++ b/src/main/java/org/tikv/common/TiSession.java @@ -75,6 +75,7 @@ public class TiSession implements AutoCloseable { return new TiSession(conf); } + @Deprecated public static TiSession getInstance(TiConfiguration conf) { synchronized (sessionCachedMap) { String key = conf.getPdAddrsString(); @@ -132,11 +133,11 @@ public class TiSession implements AutoCloseable { } public Snapshot createSnapshot() { - return new Snapshot(getTimestamp(), this.conf); + return new Snapshot(getTimestamp(), this); } public Snapshot createSnapshot(TiTimestamp ts) { - return new Snapshot(ts, conf); + return new Snapshot(ts, this); } public PDClient getPDClient() { diff --git a/src/main/java/org/tikv/common/allocator/RowIDAllocator.java b/src/main/java/org/tikv/common/allocator/RowIDAllocator.java index 5b5b588745..f7ca507215 100644 --- a/src/main/java/org/tikv/common/allocator/RowIDAllocator.java +++ b/src/main/java/org/tikv/common/allocator/RowIDAllocator.java @@ -20,7 +20,6 @@ import java.io.Serializable; import java.util.Arrays; import java.util.function.Function; import org.tikv.common.Snapshot; -import org.tikv.common.TiConfiguration; import org.tikv.common.TiSession; import org.tikv.common.codec.CodecDataInput; import org.tikv.common.codec.CodecDataOutput; @@ -41,15 +40,15 @@ import org.tikv.txn.TwoPhaseCommitter; public final class RowIDAllocator implements Serializable { private final long maxShardRowIDBits; private final long dbId; - private final TiConfiguration conf; + private final TiSession session; private final long step; private long end; - private RowIDAllocator(long maxShardRowIDBits, long dbId, long step, TiConfiguration conf) { + private RowIDAllocator(long maxShardRowIDBits, long dbId, long step, TiSession session) { this.maxShardRowIDBits = maxShardRowIDBits; this.dbId = dbId; this.step = step; - this.conf = conf; + this.session = session; } /** @@ -72,18 +71,13 @@ public final class RowIDAllocator implements Serializable { } public static RowIDAllocator create( - long dbId, TiTableInfo table, TiConfiguration conf, boolean unsigned, long step) { - RowIDAllocator allocator = new RowIDAllocator(table.getMaxShardRowIDBits(), dbId, step, conf); + long dbId, TiTableInfo table, TiSession session, boolean unsigned, long step) { + RowIDAllocator allocator = + new RowIDAllocator(table.getMaxShardRowIDBits(), dbId, step, session); if (unsigned) { - allocator.initUnsigned( - TiSession.getInstance(conf).createSnapshot(), - table.getId(), - table.getMaxShardRowIDBits()); + allocator.initUnsigned(session.createSnapshot(), table.getId(), table.getMaxShardRowIDBits()); } else { - allocator.initSigned( - TiSession.getInstance(conf).createSnapshot(), - table.getId(), - table.getMaxShardRowIDBits()); + allocator.initSigned(session.createSnapshot(), table.getId(), table.getMaxShardRowIDBits()); } return allocator; @@ -99,9 +93,8 @@ public final class RowIDAllocator implements Serializable { // set key value pair to tikv via two phase committer protocol. private void set(ByteString key, byte[] value) { - TiSession session = TiSession.getInstance(conf); TwoPhaseCommitter twoPhaseCommitter = - new TwoPhaseCommitter(conf, session.getTimestamp().getVersion()); + new TwoPhaseCommitter(session, session.getTimestamp().getVersion()); twoPhaseCommitter.prewritePrimaryKey( ConcreteBackOffer.newCustomBackOff(BackOffer.PREWRITE_MAX_BACKOFF), diff --git a/src/main/java/org/tikv/txn/TTLManager.java b/src/main/java/org/tikv/txn/TTLManager.java index 4199ee5703..679c343d04 100644 --- a/src/main/java/org/tikv/txn/TTLManager.java +++ b/src/main/java/org/tikv/txn/TTLManager.java @@ -23,7 +23,6 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.tikv.common.TiConfiguration; import org.tikv.common.TiSession; import org.tikv.common.codec.KeyUtils; import org.tikv.common.exception.GrpcException; @@ -64,12 +63,12 @@ public class TTLManager { private final ScheduledExecutorService scheduler; private final AtomicInteger state; - public TTLManager(TiConfiguration conf, long startTS, byte[] primaryKey) { + public TTLManager(TiSession session, long startTS, byte[] primaryKey) { this.startTS = startTS; this.primaryLock = ByteString.copyFrom(primaryKey); this.state = new AtomicInteger(STATE_UNINITIALIZED); - this.kvClient = TiSession.getInstance(conf).createTxnClient(); + this.kvClient = session.createTxnClient(); this.regionManager = kvClient.getRegionManager(); scheduler = diff --git a/src/main/java/org/tikv/txn/TwoPhaseCommitter.java b/src/main/java/org/tikv/txn/TwoPhaseCommitter.java index 5f43800763..9dca512a83 100644 --- a/src/main/java/org/tikv/txn/TwoPhaseCommitter.java +++ b/src/main/java/org/tikv/txn/TwoPhaseCommitter.java @@ -32,7 +32,6 @@ import java.util.concurrent.Executors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tikv.common.BytePairWrapper; -import org.tikv.common.TiConfiguration; import org.tikv.common.TiSession; import org.tikv.common.codec.KeyUtils; import org.tikv.common.exception.GrpcException; @@ -82,8 +81,8 @@ public class TwoPhaseCommitter { private final int prewriteMaxRetryTimes; private final ExecutorService executorService; - public TwoPhaseCommitter(TiConfiguration conf, long startTime) { - this.kvClient = TiSession.getInstance(conf).createTxnClient(); + public TwoPhaseCommitter(TiSession session, long startTime) { + this.kvClient = session.createTxnClient(); this.regionManager = kvClient.getRegionManager(); this.startTs = startTime; this.lockTTL = DEFAULT_BATCH_WRITE_LOCK_TTL; @@ -97,7 +96,7 @@ public class TwoPhaseCommitter { } public TwoPhaseCommitter( - TiConfiguration conf, + TiSession session, long startTime, long lockTTL, long txnPrewriteBatchSize, @@ -106,7 +105,7 @@ public class TwoPhaseCommitter { int writeThreadPerTask, boolean retryCommitSecondaryKeys, int prewriteMaxRetryTimes) { - this.kvClient = TiSession.getInstance(conf).createTxnClient(); + this.kvClient = session.createTxnClient(); this.regionManager = kvClient.getRegionManager(); this.startTs = startTime; this.lockTTL = lockTTL; diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index 436da0cd4c..9fe79e2251 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -78,7 +78,8 @@ public class RawKVClientTest { data = new TreeMap<>(bsc); initialized = true; } catch (Exception e) { - logger.warn("Cannot initialize raw client, please check whether TiKV is running. Test skipped.", e); + logger.warn( + "Cannot initialize raw client, please check whether TiKV is running. Test skipped.", e); } }