Skip to content

Commit 25b1b51

Browse files
committed
dedup isTerminalStatus
1 parent bb37755 commit 25b1b51

2 files changed

Lines changed: 5 additions & 12 deletions

File tree

sdk/src/main/java/com/amazonaws/lambda/durable/execution/ExecutionManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public void shutdown() {
208208
checkpointBatcher.shutdown();
209209
}
210210

211-
private boolean isTerminalStatus(OperationStatus status) {
211+
public static boolean isTerminalStatus(OperationStatus status) {
212212
return status == OperationStatus.SUCCEEDED
213213
|| status == OperationStatus.FAILED
214214
|| status == OperationStatus.CANCELLED

sdk/src/main/java/com/amazonaws/lambda/durable/operation/BaseDurableOperation.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.slf4j.LoggerFactory;
2020
import software.amazon.awssdk.services.lambda.model.ErrorObject;
2121
import software.amazon.awssdk.services.lambda.model.Operation;
22-
import software.amazon.awssdk.services.lambda.model.OperationStatus;
2322
import software.amazon.awssdk.services.lambda.model.OperationType;
2423
import software.amazon.awssdk.services.lambda.model.OperationUpdate;
2524

@@ -50,7 +49,7 @@ public abstract class BaseDurableOperation<T> implements DurableFuture<T> {
5049
private final ExecutionManager executionManager;
5150
private final TypeToken<T> resultTypeToken;
5251
private final SerDes resultSerDes;
53-
private final CompletableFuture<Void> completionFuture;
52+
protected final CompletableFuture<Void> completionFuture;
5453

5554
protected BaseDurableOperation(
5655
String operationId,
@@ -146,7 +145,9 @@ protected Operation waitForOperationCompletion() {
146145

147146
/** Receives operation updates from ExecutionManager and updates the internal state of the operation */
148147
public void onCheckpointComplete(Operation operation) {
149-
if (isTerminalStatus(operation.status())) {
148+
if (ExecutionManager.isTerminalStatus(operation.status())) {
149+
// This method handles only terminal status updates. Override this method if a DurableOperation needs to
150+
// handle other updates.
150151
logger.trace("In onCheckpointComplete, completing operation {} ({})", operationId, completionFuture);
151152
// It's important that we synchronize access to the future, otherwise the processing could happen
152153
// on someone else's thread and cause a race condition.
@@ -292,12 +293,4 @@ protected void validateReplay(Operation checkpointed) {
292293
operationId, checkpointed.name(), getName())));
293294
}
294295
}
295-
296-
private boolean isTerminalStatus(OperationStatus status) {
297-
return status == OperationStatus.SUCCEEDED
298-
|| status == OperationStatus.FAILED
299-
|| status == OperationStatus.CANCELLED
300-
|| status == OperationStatus.TIMED_OUT
301-
|| status == OperationStatus.STOPPED;
302-
}
303296
}

0 commit comments

Comments
 (0)