Skip to content

Commit f3f5726

Browse files
committed
Fix to use a separate manager instance for DMLs
1 parent fe02d05 commit f3f5726

File tree

6 files changed

+68
-71
lines changed

6 files changed

+68
-71
lines changed

core/src/integration-test/java/com/scalar/db/storage/jdbc/ConsensusCommitAdminIntegrationTestWithJdbcDatabase.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import static org.assertj.core.api.Assertions.catchThrowable;
66

77
import com.google.common.util.concurrent.Uninterruptibles;
8-
import com.scalar.db.api.DistributedTransactionManager;
98
import com.scalar.db.api.Insert;
109
import com.scalar.db.api.InsertBuilder;
1110
import com.scalar.db.api.Result;
@@ -147,8 +146,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
147146
public void
148147
alterColumnType_Oracle_AlterColumnTypeFromEachExistingDataTypeToText_ShouldThrowUnsupportedOperationException()
149148
throws ExecutionException, TransactionException {
150-
try (DistributedTransactionManager transactionManager =
151-
transactionFactory.getTransactionManager()) {
149+
try {
152150
// Arrange
153151
Map<String, String> options = getCreationOptions();
154152
TableMetadata.Builder currentTableMetadataBuilder =
@@ -190,7 +188,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
190188
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
191189
insert.timestampTZValue("c12", Instant.now());
192190
}
193-
transactionalInsert(transactionManager, insert.build());
191+
transactionalInsert(insert.build());
194192

195193
// Act Assert
196194
assertThatCode(() -> admin.alterColumnType(namespace1, TABLE4, "c3", DataType.TEXT))
@@ -225,8 +223,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
225223
public void
226224
alterColumnType_Db2_AlterColumnTypeFromEachExistingDataTypeToText_ShouldAlterColumnTypesCorrectlyIfSupported()
227225
throws ExecutionException, TransactionException {
228-
try (DistributedTransactionManager transactionManager =
229-
transactionFactory.getTransactionManager()) {
226+
try {
230227
// Arrange
231228
Map<String, String> options = getCreationOptions();
232229
TableMetadata.Builder currentTableMetadataBuilder =
@@ -268,7 +265,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
268265
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
269266
insert.timestampTZValue("c12", Instant.now());
270267
}
271-
transactionalInsert(transactionManager, insert.build());
268+
transactionalInsert(insert.build());
272269

273270
// Act Assert
274271
assertThatCode(() -> admin.alterColumnType(namespace1, TABLE4, "c3", DataType.TEXT))
@@ -332,7 +329,7 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
332329
@EnabledIf("isOracle")
333330
public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorrectly()
334331
throws ExecutionException, TransactionException {
335-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
332+
try {
336333
// Arrange
337334
Map<String, String> options = getCreationOptions();
338335
TableMetadata.Builder currentTableMetadataBuilder =
@@ -356,7 +353,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
356353
.clusteringKey(Key.ofInt("c2", 2))
357354
.intValue("c3", expectedColumn3Value)
358355
.floatValue("c4", expectedColumn4Value);
359-
transactionalInsert(manager, insert.build());
356+
transactionalInsert(insert.build());
360357

361358
// Act
362359
admin.alterColumnType(namespace1, TABLE4, "c3", DataType.BIGINT);
@@ -385,7 +382,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
385382
.table(TABLE4)
386383
.partitionKey(Key.ofInt("c1", 1))
387384
.build();
388-
List<Result> results = transactionalScan(manager, scan);
385+
List<Result> results = transactionalScan(scan);
389386
assertThat(results).hasSize(1);
390387
Result result = results.get(0);
391388
assertThat(result.getBigInt("c3")).isEqualTo(expectedColumn3Value);

core/src/integration-test/java/com/scalar/db/storage/jdbc/SingleCrudOperationTransactionAdminIntegrationTestWithJdbcDatabase.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
147147
public void
148148
alterColumnType_Oracle_AlterColumnTypeFromEachExistingDataTypeToText_ShouldThrowUnsupportedOperationException()
149149
throws ExecutionException, TransactionException {
150-
try (DistributedTransactionManager transactionManager =
151-
transactionFactory.getTransactionManager()) {
150+
try {
152151
// Arrange
153152
Map<String, String> options = getCreationOptions();
154153
TableMetadata.Builder currentTableMetadataBuilder =
@@ -190,7 +189,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
190189
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
191190
insert.timestampTZValue("c12", Instant.now());
192191
}
193-
transactionalInsert(transactionManager, insert.build());
192+
transactionalInsert(insert.build());
194193

195194
// Act Assert
196195
assertThatCode(() -> admin.alterColumnType(namespace1, TABLE4, "c3", DataType.TEXT))
@@ -332,7 +331,7 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
332331
@EnabledIf("isOracle")
333332
public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorrectly()
334333
throws ExecutionException, TransactionException {
335-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
334+
try {
336335
// Arrange
337336
Map<String, String> options = getCreationOptions();
338337
TableMetadata.Builder currentTableMetadataBuilder =
@@ -356,7 +355,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
356355
.clusteringKey(Key.ofInt("c2", 2))
357356
.intValue("c3", expectedColumn3Value)
358357
.floatValue("c4", expectedColumn4Value);
359-
transactionalInsert(manager, insert.build());
358+
transactionalInsert(insert.build());
360359

361360
// Act
362361
admin.alterColumnType(namespace1, TABLE4, "c3", DataType.BIGINT);
@@ -385,7 +384,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
385384
.table(TABLE4)
386385
.partitionKey(Key.ofInt("c1", 1))
387386
.build();
388-
List<Result> results = transactionalScan(manager, scan);
387+
List<Result> results = transactionalScan(scan);
389388
assertThat(results).hasSize(1);
390389
Result result = results.get(0);
391390
assertThat(result.getBigInt("c3")).isEqualTo(expectedColumn3Value);

core/src/integration-test/java/com/scalar/db/transaction/jdbc/JdbcTransactionAdminIntegrationTest.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
219219
public void
220220
alterColumnType_Oracle_AlterColumnTypeFromEachExistingDataTypeToText_ShouldThrowUnsupportedOperationException()
221221
throws ExecutionException, TransactionException {
222-
try (DistributedTransactionManager transactionManager =
223-
transactionFactory.getTransactionManager()) {
222+
try {
224223
// Arrange
225224
Map<String, String> options = getCreationOptions();
226225
TableMetadata.Builder currentTableMetadataBuilder =
@@ -262,7 +261,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
262261
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
263262
insert.timestampTZValue("c12", Instant.now());
264263
}
265-
transactionalInsert(transactionManager, insert.build());
264+
transactionalInsert(insert.build());
266265

267266
// Act Assert
268267
assertThatCode(() -> admin.alterColumnType(namespace1, TABLE4, "c3", DataType.TEXT))
@@ -340,7 +339,7 @@ public void renameColumn_Db2_ForPrimaryOrIndexKeyColumn_ShouldThrowUnsupportedOp
340339
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
341340
insert.timestampTZValue("c12", Instant.now());
342341
}
343-
transactionalInsert(transactionManager, insert.build());
342+
transactionalInsert(insert.build());
344343

345344
// Act Assert
346345
assertThatCode(() -> admin.alterColumnType(namespace1, TABLE4, "c3", DataType.TEXT))
@@ -404,7 +403,7 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
404403
@EnabledIf("isOracle")
405404
public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorrectly()
406405
throws ExecutionException, TransactionException {
407-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
406+
try {
408407
// Arrange
409408
Map<String, String> options = getCreationOptions();
410409
TableMetadata.Builder currentTableMetadataBuilder =
@@ -428,7 +427,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
428427
.clusteringKey(Key.ofInt("c2", 2))
429428
.intValue("c3", expectedColumn3Value)
430429
.floatValue("c4", expectedColumn4Value);
431-
transactionalInsert(manager, insert.build());
430+
transactionalInsert(insert.build());
432431

433432
// Act
434433
admin.alterColumnType(namespace1, TABLE4, "c3", DataType.BIGINT);
@@ -457,7 +456,7 @@ public void alterColumnType_Oracle_WideningConversion_ShouldAlterColumnTypesCorr
457456
.table(TABLE4)
458457
.partitionKey(Key.ofInt("c1", 1))
459458
.build();
460-
List<Result> results = transactionalScan(manager, scan);
459+
List<Result> results = transactionalScan(scan);
461460
assertThat(results).hasSize(1);
462461
Result result = results.get(0);
463462
assertThat(result.getBigInt("c3")).isEqualTo(expectedColumn3Value);
@@ -497,25 +496,27 @@ protected boolean isIndexOnBlobColumnSupported() {
497496
}
498497

499498
@Override
500-
protected void transactionalInsert(DistributedTransactionManager manager, Insert insert)
501-
throws TransactionException {
499+
protected void transactionalInsert(Insert insert) throws TransactionException {
502500
// Wait for cache expiry
503501
Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
504502

505-
DistributedTransaction transaction = manager.start();
506-
transaction.insert(insert);
507-
transaction.commit();
503+
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
504+
DistributedTransaction transaction = manager.start();
505+
transaction.insert(insert);
506+
transaction.commit();
507+
}
508508
}
509509

510510
@Override
511-
protected List<Result> transactionalScan(DistributedTransactionManager manager, Scan scan)
512-
throws TransactionException {
511+
protected List<Result> transactionalScan(Scan scan) throws TransactionException {
513512
// Wait for cache expiry
514513
Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
515514

516-
DistributedTransaction transaction = manager.start();
517-
List<Result> results = transaction.scan(scan);
518-
transaction.commit();
519-
return results;
515+
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
516+
DistributedTransaction transaction = manager.start();
517+
List<Result> results = transaction.scan(scan);
518+
transaction.commit();
519+
return results;
520+
}
520521
}
521522
}

integration-test/src/main/java/com/scalar/db/api/DistributedTransactionAdminIntegrationTestBase.java

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -430,14 +430,13 @@ public void truncateTable_ShouldTruncateProperly()
430430
// executing DMLs
431431
String table = "table_for_truncate";
432432

433-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
433+
try {
434434
// Arrange
435435
Map<String, String> options = getCreationOptions();
436436
admin.createTable(namespace1, table, TABLE_METADATA, true, options);
437437
Key partitionKey = Key.of(COL_NAME2, "aaa", COL_NAME1, 1);
438438
Key clusteringKey = Key.of(COL_NAME4, 2, COL_NAME3, "bbb");
439439
transactionalInsert(
440-
manager,
441440
Insert.newBuilder()
442441
.namespace(namespace1)
443442
.table(table)
@@ -458,7 +457,6 @@ public void truncateTable_ShouldTruncateProperly()
458457
// Assert
459458
List<Result> results =
460459
transactionalScan(
461-
manager,
462460
Scan.newBuilder()
463461
.namespace(namespace1)
464462
.table(table)
@@ -518,7 +516,7 @@ public void createIndex_ForAllDataTypesWithExistingData_ShouldCreateIndexesCorre
518516
// executing DMLs
519517
String table = "table_for_create_index";
520518

521-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
519+
try {
522520
// Arrange
523521
Map<String, String> options = getCreationOptions();
524522
TableMetadata.Builder metadataBuilder =
@@ -566,7 +564,7 @@ public void createIndex_ForAllDataTypesWithExistingData_ShouldCreateIndexesCorre
566564
COL_NAME13,
567565
LocalDateTime.of(LocalDate.of(2020, 6, 2), LocalTime.of(12, 2, 6, 123_000_000)));
568566
}
569-
transactionalInsert(manager, insert.build());
567+
transactionalInsert(insert.build());
570568

571569
// Act
572570
admin.createIndex(namespace1, table, COL_NAME2, options);
@@ -633,7 +631,6 @@ public void createIndex_ForAllDataTypesWithExistingData_ShouldCreateIndexesCorre
633631
indexCount += 1;
634632
}
635633
assertThat(actualSecondaryIndexNames).hasSize(indexCount);
636-
637634
} finally {
638635
admin.dropTable(namespace1, table, true);
639636
}
@@ -712,9 +709,9 @@ public void dropIndex_ForAllDataTypesWithExistingData_ShouldDropIndexCorrectly()
712709
throws Exception {
713710
// Use a separate table name to avoid hitting the stale cache, which can cause test failure when
714711
// executing DMLs
715-
String table = "table_for_alter_1";
712+
String table = "table_for_drop_index";
716713

717-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
714+
try {
718715
// Arrange
719716
Map<String, String> options = getCreationOptions();
720717
TableMetadata.Builder metadataBuilder =
@@ -753,6 +750,7 @@ public void dropIndex_ForAllDataTypesWithExistingData_ShouldDropIndexCorrectly()
753750
metadataBuilder.addSecondaryIndex(COL_NAME13);
754751
}
755752
admin.createTable(namespace1, table, metadataBuilder.build(), options);
753+
756754
InsertBuilder.Buildable insert =
757755
Insert.newBuilder()
758756
.namespace(namespace1)
@@ -776,7 +774,7 @@ public void dropIndex_ForAllDataTypesWithExistingData_ShouldDropIndexCorrectly()
776774
COL_NAME13,
777775
LocalDateTime.of(LocalDate.of(2020, 6, 2), LocalTime.of(12, 2, 6, 123_000_000)));
778776
}
779-
transactionalInsert(manager, insert.build());
777+
transactionalInsert(insert.build());
780778

781779
// Act
782780
admin.dropIndex(namespace1, table, COL_NAME2);
@@ -1185,9 +1183,9 @@ public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
11851183
throws ExecutionException, IOException, TransactionException {
11861184
// Use a separate table name to avoid hitting the stale cache, which can cause test failure when
11871185
// executing DMLs
1188-
String table = "table_for_alter_2";
1186+
String table = "table_for_alter_1";
11891187

1190-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
1188+
try {
11911189
// Arrange
11921190
Map<String, String> options = getCreationOptions();
11931191
TableMetadata.Builder currentTableMetadataBuilder =
@@ -1229,7 +1227,7 @@ public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
12291227
insert.timestampValue("c11", LocalDateTime.now(ZoneOffset.UTC));
12301228
insert.timestampTZValue("c12", Instant.now());
12311229
}
1232-
transactionalInsert(manager, insert.build());
1230+
transactionalInsert(insert.build());
12331231

12341232
// Act
12351233
admin.alterColumnType(namespace1, table, "c3", DataType.TEXT);
@@ -1277,9 +1275,9 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
12771275
throws ExecutionException, IOException, TransactionException {
12781276
// Use a separate table name to avoid hitting the stale cache, which can cause test failure when
12791277
// executing DMLs
1280-
String table = "table_for_alter_3";
1278+
String table = "table_for_alter_2";
12811279

1282-
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
1280+
try {
12831281
// Arrange
12841282
Map<String, String> options = getCreationOptions();
12851283
TableMetadata.Builder currentTableMetadataBuilder =
@@ -1303,7 +1301,7 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
13031301
.clusteringKey(Key.ofInt("c2", 2))
13041302
.intValue("c3", expectedColumn3Value)
13051303
.floatValue("c4", expectedColumn4Value);
1306-
transactionalInsert(manager, insert.build());
1304+
transactionalInsert(insert.build());
13071305

13081306
// Act
13091307
admin.alterColumnType(namespace1, table, "c3", DataType.BIGINT);
@@ -1329,7 +1327,7 @@ public void alterColumnType_WideningConversion_ShouldAlterColumnTypesCorrectly()
13291327
.table(table)
13301328
.partitionKey(Key.ofInt("c1", 1))
13311329
.build();
1332-
List<Result> results = transactionalScan(manager, scan);
1330+
List<Result> results = transactionalScan(scan);
13331331
assertThat(results).hasSize(1);
13341332
Result result = results.get(0);
13351333
assertThat(result.getBigInt("c3")).isEqualTo(expectedColumn3Value);
@@ -1592,9 +1590,7 @@ protected boolean isCreateIndexOnTextColumnEnabled() {
15921590
return true;
15931591
}
15941592

1595-
protected abstract void transactionalInsert(DistributedTransactionManager manager, Insert insert)
1596-
throws TransactionException;
1593+
protected abstract void transactionalInsert(Insert insert) throws TransactionException;
15971594

1598-
protected abstract List<Result> transactionalScan(
1599-
DistributedTransactionManager manager, Scan scan) throws TransactionException;
1595+
protected abstract List<Result> transactionalScan(Scan scan) throws TransactionException;
16001596
}

integration-test/src/main/java/com/scalar/db/transaction/consensuscommit/ConsensusCommitAdminIntegrationTestBase.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,27 @@ protected final Properties getProperties(String testName) {
3434
protected abstract Properties getProps(String testName);
3535

3636
@Override
37-
protected void transactionalInsert(DistributedTransactionManager manager, Insert insert)
38-
throws TransactionException {
37+
protected void transactionalInsert(Insert insert) throws TransactionException {
3938
// Wait for cache expiry
4039
Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
4140

42-
DistributedTransaction transaction = manager.start();
43-
transaction.insert(insert);
44-
transaction.commit();
41+
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
42+
DistributedTransaction transaction = manager.start();
43+
transaction.insert(insert);
44+
transaction.commit();
45+
}
4546
}
4647

4748
@Override
48-
protected List<Result> transactionalScan(DistributedTransactionManager manager, Scan scan)
49-
throws TransactionException {
49+
protected List<Result> transactionalScan(Scan scan) throws TransactionException {
5050
// Wait for cache expiry
5151
Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
5252

53-
DistributedTransaction transaction = manager.start();
54-
List<Result> results = transaction.scan(scan);
55-
transaction.commit();
56-
return results;
53+
try (DistributedTransactionManager manager = transactionFactory.getTransactionManager()) {
54+
DistributedTransaction transaction = manager.start();
55+
List<Result> results = transaction.scan(scan);
56+
transaction.commit();
57+
return results;
58+
}
5759
}
5860
}

0 commit comments

Comments
 (0)