@@ -48,12 +48,12 @@ public class ConsensusCommitManager extends AbstractDistributedTransactionManage
4848 private static final Logger logger = LoggerFactory .getLogger (ConsensusCommitManager .class );
4949 private final DistributedStorage storage ;
5050 private final DistributedStorageAdmin admin ;
51- private final ConsensusCommitConfig config ;
5251 private final TransactionTableMetadataManager tableMetadataManager ;
5352 private final Coordinator coordinator ;
5453 private final ParallelExecutor parallelExecutor ;
5554 private final RecoveryExecutor recoveryExecutor ;
5655 protected final CommitHandler commit ;
56+ private final Isolation isolation ;
5757 private final boolean isIncludeMetadataEnabled ;
5858 private final ConsensusCommitMutationOperationChecker mutationOperationChecker ;
5959 @ Nullable private final CoordinatorGroupCommitter groupCommitter ;
@@ -65,7 +65,7 @@ public ConsensusCommitManager(
6565 super (databaseConfig );
6666 this .storage = storage ;
6767 this .admin = admin ;
68- config = new ConsensusCommitConfig (databaseConfig );
68+ ConsensusCommitConfig config = new ConsensusCommitConfig (databaseConfig );
6969 coordinator = new Coordinator (storage , config );
7070 parallelExecutor = new ParallelExecutor (config );
7171 tableMetadataManager =
@@ -74,7 +74,8 @@ public ConsensusCommitManager(
7474 RecoveryHandler recovery = new RecoveryHandler (storage , coordinator , tableMetadataManager );
7575 recoveryExecutor = new RecoveryExecutor (coordinator , recovery , tableMetadataManager );
7676 groupCommitter = CoordinatorGroupCommitter .from (config ).orElse (null );
77- commit = createCommitHandler ();
77+ commit = createCommitHandler (config );
78+ isolation = config .getIsolation ();
7879 isIncludeMetadataEnabled = config .isIncludeMetadataEnabled ();
7980 mutationOperationChecker = new ConsensusCommitMutationOperationChecker (tableMetadataManager );
8081 }
@@ -85,7 +86,7 @@ protected ConsensusCommitManager(DatabaseConfig databaseConfig) {
8586 storage = storageFactory .getStorage ();
8687 admin = storageFactory .getStorageAdmin ();
8788
88- config = new ConsensusCommitConfig (databaseConfig );
89+ ConsensusCommitConfig config = new ConsensusCommitConfig (databaseConfig );
8990 coordinator = new Coordinator (storage , config );
9091 parallelExecutor = new ParallelExecutor (config );
9192 tableMetadataManager =
@@ -94,7 +95,8 @@ protected ConsensusCommitManager(DatabaseConfig databaseConfig) {
9495 RecoveryHandler recovery = new RecoveryHandler (storage , coordinator , tableMetadataManager );
9596 recoveryExecutor = new RecoveryExecutor (coordinator , recovery , tableMetadataManager );
9697 groupCommitter = CoordinatorGroupCommitter .from (config ).orElse (null );
97- commit = createCommitHandler ();
98+ commit = createCommitHandler (config );
99+ isolation = config .getIsolation ();
98100 isIncludeMetadataEnabled = config .isIncludeMetadataEnabled ();
99101 mutationOperationChecker = new ConsensusCommitMutationOperationChecker (tableMetadataManager );
100102 }
@@ -104,17 +106,17 @@ protected ConsensusCommitManager(DatabaseConfig databaseConfig) {
104106 ConsensusCommitManager (
105107 DistributedStorage storage ,
106108 DistributedStorageAdmin admin ,
107- ConsensusCommitConfig config ,
108109 DatabaseConfig databaseConfig ,
109110 Coordinator coordinator ,
110111 ParallelExecutor parallelExecutor ,
111112 RecoveryExecutor recoveryExecutor ,
112113 CommitHandler commit ,
114+ Isolation isolation ,
115+ boolean isIncludeMetadataEnabled ,
113116 @ Nullable CoordinatorGroupCommitter groupCommitter ) {
114117 super (databaseConfig );
115118 this .storage = storage ;
116119 this .admin = admin ;
117- this .config = config ;
118120 tableMetadataManager =
119121 new TransactionTableMetadataManager (
120122 admin , databaseConfig .getMetadataCacheExpirationTimeSecs ());
@@ -123,13 +125,14 @@ protected ConsensusCommitManager(DatabaseConfig databaseConfig) {
123125 this .recoveryExecutor = recoveryExecutor ;
124126 this .commit = commit ;
125127 this .groupCommitter = groupCommitter ;
126- this .isIncludeMetadataEnabled = config .isIncludeMetadataEnabled ();
128+ this .isolation = isolation ;
129+ this .isIncludeMetadataEnabled = isIncludeMetadataEnabled ;
127130 this .mutationOperationChecker =
128131 new ConsensusCommitMutationOperationChecker (tableMetadataManager );
129132 }
130133
131134 // `groupCommitter` must be set before calling this method.
132- private CommitHandler createCommitHandler () {
135+ private CommitHandler createCommitHandler (ConsensusCommitConfig config ) {
133136 if (isGroupCommitEnabled ()) {
134137 return new CommitHandlerWithGroupCommit (
135138 storage ,
@@ -156,7 +159,7 @@ public DistributedTransaction begin() {
156159
157160 @ Override
158161 public DistributedTransaction begin (String txId ) {
159- return begin (txId , config . getIsolation () , false , false );
162+ return begin (txId , isolation , false , false );
160163 }
161164
162165 @ Override
@@ -167,14 +170,15 @@ public DistributedTransaction beginReadOnly() {
167170
168171 @ Override
169172 public DistributedTransaction beginReadOnly (String txId ) {
170- return begin (txId , config . getIsolation () , true , false );
173+ return begin (txId , isolation , true , false );
171174 }
172175
173176 /** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
174177 @ Deprecated
175178 @ Override
176179 public DistributedTransaction start (com .scalar .db .api .Isolation isolation ) {
177- return begin (Isolation .valueOf (isolation .name ()));
180+ String txId = UUID .randomUUID ().toString ();
181+ return begin (txId , Isolation .valueOf (isolation .name ()), false , false );
178182 }
179183
180184 /** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
@@ -189,14 +193,16 @@ public DistributedTransaction start(String txId, com.scalar.db.api.Isolation iso
189193 @ Override
190194 public DistributedTransaction start (
191195 com .scalar .db .api .Isolation isolation , com .scalar .db .api .SerializableStrategy strategy ) {
192- return begin (Isolation .valueOf (isolation .name ()));
196+ String txId = UUID .randomUUID ().toString ();
197+ return begin (txId , Isolation .valueOf (isolation .name ()), false , false );
193198 }
194199
195200 /** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
196201 @ Deprecated
197202 @ Override
198203 public DistributedTransaction start (com .scalar .db .api .SerializableStrategy strategy ) {
199- return begin (Isolation .SERIALIZABLE );
204+ String txId = UUID .randomUUID ().toString ();
205+ return begin (txId , Isolation .SERIALIZABLE , false , false );
200206 }
201207
202208 /** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
@@ -217,18 +223,6 @@ public DistributedTransaction start(
217223 return begin (txId , Isolation .valueOf (isolation .name ()), false , false );
218224 }
219225
220- @ VisibleForTesting
221- DistributedTransaction begin (Isolation isolation ) {
222- String txId = UUID .randomUUID ().toString ();
223- return begin (txId , isolation , false , false );
224- }
225-
226- @ VisibleForTesting
227- DistributedTransaction beginReadOnly (Isolation isolation ) {
228- String txId = UUID .randomUUID ().toString ();
229- return begin (txId , isolation , true , false );
230- }
231-
232226 @ VisibleForTesting
233227 DistributedTransaction begin (
234228 String txId , Isolation isolation , boolean readOnly , boolean oneOperation ) {
@@ -238,7 +232,7 @@ DistributedTransaction begin(
238232 assert groupCommitter != null ;
239233 txId = groupCommitter .reserve (txId );
240234 }
241- if (!config . getIsolation () .equals (isolation )) {
235+ if (!this . isolation .equals (isolation )) {
242236 logger .warn (
243237 "Setting different isolation level from the one in DatabaseConfig might cause unexpected "
244238 + "anomalies" );
@@ -266,7 +260,7 @@ DistributedTransaction begin(
266260
267261 private DistributedTransaction beginOneOperation (boolean readOnly ) {
268262 String txId = UUID .randomUUID ().toString ();
269- return begin (txId , config . getIsolation () , readOnly , true );
263+ return begin (txId , isolation , readOnly , true );
270264 }
271265
272266 @ Override
0 commit comments