Skip to content

Commit 944cc03

Browse files
DT-1184: update db retry catch to use new exception class (#1895)
1 parent 3ec1247 commit 944cc03

File tree

7 files changed

+28
-28
lines changed

7 files changed

+28
-28
lines changed

src/main/java/bio/terra/service/dataset/flight/create/CreateDatasetMetadataStep.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@
1414
import java.util.UUID;
1515
import org.slf4j.Logger;
1616
import org.slf4j.LoggerFactory;
17-
import org.springframework.dao.CannotSerializeTransactionException;
17+
import org.springframework.dao.TransientDataAccessException;
18+
import org.springframework.transaction.TransactionSystemException;
1819

1920
public class CreateDatasetMetadataStep implements Step {
2021

21-
private DatasetDao datasetDao;
22-
private DatasetRequestModel datasetRequest;
22+
private final DatasetDao datasetDao;
23+
private final DatasetRequestModel datasetRequest;
2324

24-
private static Logger logger = LoggerFactory.getLogger(CreateDatasetMetadataStep.class);
25+
private static final Logger logger = LoggerFactory.getLogger(CreateDatasetMetadataStep.class);
2526

2627
public CreateDatasetMetadataStep(DatasetDao datasetDao, DatasetRequestModel datasetRequest) {
2728
this.datasetDao = datasetDao;
@@ -46,7 +47,7 @@ public StepResult doStep(FlightContext context) {
4647
return StepResult.getStepResultSuccess();
4748
} catch (InvalidDatasetException idEx) {
4849
return new StepResult(StepStatus.STEP_RESULT_FAILURE_FATAL, idEx);
49-
} catch (CannotSerializeTransactionException ex) {
50+
} catch (TransientDataAccessException | TransactionSystemException ex) {
5051
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, ex);
5152
} catch (Exception ex) {
5253
return new StepResult(

src/main/java/bio/terra/service/snapshot/flight/create/CountSnapshotTableRowsStep.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import java.util.Map;
1313
import org.slf4j.Logger;
1414
import org.slf4j.LoggerFactory;
15-
import org.springframework.dao.CannotSerializeTransactionException;
15+
import org.springframework.dao.TransientDataAccessException;
1616
import org.springframework.transaction.TransactionSystemException;
1717

1818
public class CountSnapshotTableRowsStep implements Step {
@@ -39,8 +39,8 @@ public StepResult doStep(FlightContext flightContext)
3939
Map<String, Long> tableRowCounts = bigQuerySnapshotPdao.getSnapshotTableRowCounts(snapshot);
4040
try {
4141
snapshotDao.updateSnapshotTableRowCounts(snapshot, tableRowCounts);
42-
} catch (CannotSerializeTransactionException | TransactionSystemException ex) {
43-
logger.error("Could not serialize the transaction. Retrying.", ex);
42+
} catch (TransientDataAccessException | TransactionSystemException ex) {
43+
logger.error("Transaction failed due to a transient error. Retrying.", ex);
4444
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, ex);
4545
}
4646
return StepResult.getStepResultSuccess();

src/main/java/bio/terra/service/snapshot/flight/create/CreateSnapshotCountTableRowsAzureStep.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@
1010
import bio.terra.stairway.StepResult;
1111
import bio.terra.stairway.StepStatus;
1212
import bio.terra.stairway.exception.RetryException;
13-
import java.util.HashMap;
1413
import java.util.Map;
1514
import org.slf4j.Logger;
1615
import org.slf4j.LoggerFactory;
17-
import org.springframework.dao.CannotSerializeTransactionException;
16+
import org.springframework.dao.TransientDataAccessException;
1817
import org.springframework.transaction.TransactionSystemException;
1918

2019
public class CreateSnapshotCountTableRowsAzureStep implements Step {
@@ -37,11 +36,11 @@ public StepResult doStep(FlightContext flightContext)
3736
FlightMap workingMap = flightContext.getWorkingMap();
3837
Snapshot snapshot = snapshotDao.retrieveSnapshotByName(snapshotReq.getName());
3938
Map<String, Long> tableRowCounts =
40-
workingMap.get(SnapshotWorkingMapKeys.TABLE_ROW_COUNT_MAP, HashMap.class);
39+
workingMap.get(SnapshotWorkingMapKeys.TABLE_ROW_COUNT_MAP, Map.class);
4140
try {
4241
snapshotDao.updateSnapshotTableRowCounts(snapshot, tableRowCounts);
43-
} catch (CannotSerializeTransactionException | TransactionSystemException ex) {
44-
logger.error("Could not serialize the transaction. Retrying.", ex);
42+
} catch (TransientDataAccessException | TransactionSystemException ex) {
43+
logger.error("Transaction failed due to a transient error. Retrying.", ex);
4544
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, ex);
4645
}
4746
return StepResult.getStepResultSuccess();

src/main/java/bio/terra/service/snapshot/flight/create/CreateSnapshotMetadataStep.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.UUID;
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
22-
import org.springframework.dao.CannotSerializeTransactionException;
22+
import org.springframework.dao.TransientDataAccessException;
2323
import org.springframework.http.HttpStatus;
2424
import org.springframework.transaction.TransactionSystemException;
2525

@@ -71,8 +71,8 @@ public StepResult doStep(FlightContext context) {
7171
} catch (SnapshotNotFoundException ex) {
7272
FlightUtils.setErrorResponse(context, ex.toString(), HttpStatus.BAD_REQUEST);
7373
return new StepResult(StepStatus.STEP_RESULT_FAILURE_FATAL, ex);
74-
} catch (CannotSerializeTransactionException | TransactionSystemException ex) {
75-
logger.error("Could not serialize the transaction. Retrying.", ex);
74+
} catch (TransientDataAccessException | TransactionSystemException ex) {
75+
logger.error("Transaction failed due to a transient error. Retrying.", ex);
7676
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, ex);
7777
}
7878
}

src/main/java/bio/terra/service/snapshot/flight/delete/DeleteSnapshotMetadataStep.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
import bio.terra.stairway.StepResult;
1010
import bio.terra.stairway.StepStatus;
1111
import java.util.UUID;
12-
import org.springframework.dao.CannotSerializeTransactionException;
12+
import org.springframework.dao.TransientDataAccessException;
1313
import org.springframework.http.HttpStatus;
14+
import org.springframework.transaction.TransactionSystemException;
1415

1516
public class DeleteSnapshotMetadataStep implements Step {
1617

@@ -32,7 +33,7 @@ public StepResult doStep(FlightContext context) {
3233
: DeleteResponseModel.ObjectStateEnum.NOT_FOUND;
3334
} catch (SnapshotNotFoundException ex) {
3435
stateEnum = DeleteResponseModel.ObjectStateEnum.NOT_FOUND;
35-
} catch (CannotSerializeTransactionException ex) {
36+
} catch (TransientDataAccessException | TransactionSystemException ex) {
3637
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, ex);
3738
}
3839

src/test/java/bio/terra/service/snapshot/flight/create/CountSnapshotTableRowsStepTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.junit.jupiter.api.extension.ExtendWith;
2222
import org.mockito.Mock;
2323
import org.mockito.junit.jupiter.MockitoExtension;
24-
import org.springframework.dao.CannotSerializeTransactionException;
24+
import org.springframework.dao.CannotAcquireLockException;
2525

2626
@ExtendWith(MockitoExtension.class)
2727
@Tag(Unit.TAG)
@@ -30,7 +30,7 @@ class CountSnapshotTableRowsStepTest {
3030
@Mock private BigQuerySnapshotPdao bigQuerySnapshotPdao;
3131
@Mock private SnapshotDao snapshotDao;
3232
@Mock private FlightContext flightContext;
33-
// private FlightMap workingMap;
33+
3434
private static final UUID SNAPSHOT_ID = UUID.randomUUID();
3535
private static final Snapshot SNAPSHOT =
3636
new Snapshot().id(SNAPSHOT_ID).name("Snapshot-" + SNAPSHOT_ID);
@@ -58,7 +58,7 @@ void testDoStep() throws InterruptedException {
5858
@Test
5959
void testDoStepRetry() throws InterruptedException {
6060
step = new CountSnapshotTableRowsStep(bigQuerySnapshotPdao, snapshotDao, snapshotReq);
61-
doThrow(CannotSerializeTransactionException.class)
61+
doThrow(CannotAcquireLockException.class)
6262
.when(snapshotDao)
6363
.updateSnapshotTableRowCounts(SNAPSHOT, tableRowCounts);
6464

src/test/java/bio/terra/service/snapshot/flight/create/CreateSnapshotCountTableRowsAzureStepTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
import bio.terra.stairway.StepResult;
1616
import bio.terra.stairway.StepStatus;
1717
import java.util.HashMap;
18+
import java.util.Map;
1819
import java.util.UUID;
1920
import org.junit.jupiter.api.BeforeEach;
2021
import org.junit.jupiter.api.Tag;
2122
import org.junit.jupiter.api.Test;
2223
import org.junit.jupiter.api.extension.ExtendWith;
2324
import org.mockito.Mock;
2425
import org.mockito.junit.jupiter.MockitoExtension;
25-
import org.springframework.dao.CannotSerializeTransactionException;
26+
import org.springframework.dao.CannotAcquireLockException;
2627

2728
@ExtendWith(MockitoExtension.class)
2829
@Tag(Unit.TAG)
@@ -31,23 +32,21 @@ class CreateSnapshotCountTableRowsAzureStepTest {
3132
@Mock private SnapshotDao snapshotDao;
3233
@Mock private FlightContext flightContext;
3334

34-
private FlightMap workingMap;
35-
3635
private static final UUID SNAPSHOT_ID = UUID.randomUUID();
3736
private static final Snapshot SNAPSHOT =
3837
new Snapshot().id(SNAPSHOT_ID).name("Snapshot-" + SNAPSHOT_ID);
3938

4039
private static final SnapshotRequestModel snapshotReq =
4140
new SnapshotRequestModel().name(SNAPSHOT.getName());
4241

43-
private HashMap<String, Long> tableRowCounts = new HashMap<>();
42+
private final Map<String, Long> tableRowCounts = new HashMap<>();
4443
private CreateSnapshotCountTableRowsAzureStep step;
4544

4645
@BeforeEach
4746
void setup() {
4847
when(snapshotDao.retrieveSnapshotByName(SNAPSHOT.getName())).thenReturn(SNAPSHOT);
49-
tableRowCounts.put("table", (long) 5);
50-
workingMap = new FlightMap();
48+
tableRowCounts.put("table", 5L);
49+
FlightMap workingMap = new FlightMap();
5150
workingMap.put(SnapshotWorkingMapKeys.TABLE_ROW_COUNT_MAP, tableRowCounts);
5251
when(flightContext.getWorkingMap()).thenReturn(workingMap);
5352
}
@@ -62,7 +61,7 @@ void testDoStep() throws InterruptedException {
6261
@Test
6362
void testDoStepRetry() throws InterruptedException {
6463
step = new CreateSnapshotCountTableRowsAzureStep(snapshotDao, snapshotReq);
65-
doThrow(CannotSerializeTransactionException.class)
64+
doThrow(CannotAcquireLockException.class)
6665
.when(snapshotDao)
6766
.updateSnapshotTableRowCounts(SNAPSHOT, tableRowCounts);
6867

0 commit comments

Comments
 (0)