Skip to content

Commit 750f3a2

Browse files
Respond to PR comments
1 parent 8319e3d commit 750f3a2

8 files changed

Lines changed: 22 additions & 15 deletions

File tree

temporal-sdk/src/main/java/io/temporal/failure/DefaultFailureConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ private Failure exceptionToFailure(Throwable throwable) {
337337
} else if (throwable instanceof HandlerException) {
338338
HandlerException he = (HandlerException) throwable;
339339
if (he.getOriginalFailure() != null) {
340-
return NexusUtil.nexusFailureToAPIFailure(he.getOriginalFailure(), true);
340+
return NexusUtil.nexusFailureToTemporalFailure(he.getOriginalFailure(), true);
341341
}
342342
NexusHandlerErrorRetryBehavior retryBehavior =
343343
NexusHandlerErrorRetryBehavior.NEXUS_HANDLER_ERROR_RETRY_BEHAVIOR_UNSPECIFIED;

temporal-sdk/src/main/java/io/temporal/internal/common/NexusUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public static Failure temporalFailureToNexusFailure(
8080
return failureBuilder.build();
8181
}
8282

83-
public static io.temporal.api.failure.v1.Failure nexusFailureToAPIFailure(
83+
public static io.temporal.api.failure.v1.Failure nexusFailureToTemporalFailure(
8484
FailureInfo failureInfo, boolean retryable) {
8585
io.temporal.api.failure.v1.Failure.Builder apiFailure =
8686
io.temporal.api.failure.v1.Failure.newBuilder();

temporal-sdk/src/main/java/io/temporal/internal/worker/NexusWorker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ private Response getResponseForOldServer(Response response) {
395395
.build();
396396
}
397397

398-
@SuppressWarnings("deprecation")
398+
@SuppressWarnings("deprecation") // Uses setError() for backward compat with old servers
399399
private void sendReply(
400400
ByteString taskToken,
401401
boolean supportTemporalFailure,

temporal-sdk/src/test/java/io/temporal/internal/common/NexusUtilTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void testTemporalFailureToNexusFailureRoundTrip() {
6565
}
6666
FailureInfo failureInfo = failureInfoBuilder.build();
6767

68-
Failure reconstructed = NexusUtil.nexusFailureToAPIFailure(failureInfo, true);
68+
Failure reconstructed = NexusUtil.nexusFailureToTemporalFailure(failureInfo, true);
6969

7070
// Verify round-trip preserves all fields
7171
Assert.assertEquals("test failure", reconstructed.getMessage());
@@ -95,7 +95,7 @@ public void testTemporalFailureToNexusFailureInfoRoundTrip() {
9595

9696
// Convert to FailureInfo and back
9797
FailureInfo failureInfo = NexusUtil.temporalFailureToNexusFailureInfo(outerFailure);
98-
Failure reconstructed = NexusUtil.nexusFailureToAPIFailure(failureInfo, false);
98+
Failure reconstructed = NexusUtil.nexusFailureToTemporalFailure(failureInfo, false);
9999

100100
// Verify nested structure is preserved
101101
Assert.assertEquals("outer failure", reconstructed.getMessage());
@@ -175,7 +175,7 @@ public void testNexusFailureWithStackTracePreservation() {
175175
}
176176
FailureInfo failureInfo = failureInfoBuilder.build();
177177

178-
Failure reconstructed = NexusUtil.nexusFailureToAPIFailure(failureInfo, true);
178+
Failure reconstructed = NexusUtil.nexusFailureToTemporalFailure(failureInfo, true);
179179
Assert.assertEquals(stackTrace, reconstructed.getStackTrace());
180180
}
181181

@@ -189,7 +189,7 @@ public void testNexusFailureWithoutTemporalMetadata() {
189189
.setDetailsJson("{\"detail\":\"some data\"}")
190190
.build();
191191

192-
Failure apiFailure = NexusUtil.nexusFailureToAPIFailure(failureInfo, true);
192+
Failure apiFailure = NexusUtil.nexusFailureToTemporalFailure(failureInfo, true);
193193

194194
// Should be wrapped as NexusFailure type
195195
Assert.assertEquals("generic nexus failure", apiFailure.getMessage());
@@ -235,7 +235,7 @@ public void testDeeplyNestedFailureCauses() {
235235
// Convert through Nexus format and back
236236
io.temporal.api.nexus.v1.Failure nexusFailure = NexusUtil.temporalFailureToNexusFailure(level1);
237237
FailureInfo failureInfo = NexusUtil.temporalFailureToNexusFailureInfo(level1);
238-
Failure reconstructed = NexusUtil.nexusFailureToAPIFailure(failureInfo, true);
238+
Failure reconstructed = NexusUtil.nexusFailureToTemporalFailure(failureInfo, true);
239239

240240
// Verify all levels are preserved
241241
Assert.assertEquals("level 1", reconstructed.getMessage());
@@ -253,7 +253,7 @@ public void testCanceledFailureConversion() {
253253
.build();
254254

255255
FailureInfo failureInfo = NexusUtil.temporalFailureToNexusFailureInfo(canceledFailure);
256-
Failure reconstructed = NexusUtil.nexusFailureToAPIFailure(failureInfo, true);
256+
Failure reconstructed = NexusUtil.nexusFailureToTemporalFailure(failureInfo, true);
257257

258258
Assert.assertEquals("operation canceled", reconstructed.getMessage());
259259
Assert.assertTrue(reconstructed.hasCanceledFailureInfo());

temporal-sdk/src/test/java/io/temporal/workflow/updateTest/UpdateWithStartTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ public void failWhenUpdateNamesDoNotMatch() {
646646
}
647647

648648
@Test
649-
@SuppressWarnings("deprecation")
649+
@SuppressWarnings("deprecation") // Tests validation of deprecated TERMINATE_IF_RUNNING policy
650650
public void failServerSideWhenStartIsInvalid() {
651651
WorkflowClient workflowClient = testWorkflowRule.getWorkflowClient();
652652

temporal-test-server/src/main/java/io/temporal/internal/testservice/TestWorkflowService.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ public void startWorkflowExecution(
310310
}
311311
}
312312

313+
@SuppressWarnings("deprecation") // Handles deprecated TERMINATE_IF_RUNNING reuse policy
313314
StartWorkflowExecutionResponse startWorkflowExecutionImpl(
314315
StartWorkflowExecutionRequest startRequest,
315316
Duration backoffStartInterval,
@@ -475,7 +476,7 @@ private StartWorkflowExecutionResponse throwDuplicatedWorkflow(
475476
WorkflowExecutionAlreadyStartedFailure.getDescriptor());
476477
}
477478

478-
@SuppressWarnings("deprecation")
479+
@SuppressWarnings("deprecation") // Validates deprecated TERMINATE_IF_RUNNING reuse policy
479480
private void validateWorkflowIdReusePolicy(
480481
WorkflowIdReusePolicy reusePolicy, WorkflowIdConflictPolicy conflictPolicy) {
481482
if (conflictPolicy != WorkflowIdConflictPolicy.WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED
@@ -1039,14 +1040,20 @@ public void respondNexusTaskCompleted(
10391040
}
10401041
}
10411042

1042-
@SuppressWarnings("deprecation")
1043+
@SuppressWarnings("deprecation") // to allow using Failure in the old and new formats
10431044
@Override
10441045
public void respondNexusTaskFailed(
10451046
RespondNexusTaskFailedRequest request,
10461047
StreamObserver<RespondNexusTaskFailedResponse> responseObserver) {
10471048
try {
10481049
Failure failure;
10491050
if (request.hasFailure()) {
1051+
if (!request.getFailure().hasNexusHandlerFailureInfo()) {
1052+
throw Status.INVALID_ARGUMENT
1053+
.withDescription(
1054+
"request Failure must contain error or failure with NexusHandlerFailureInfo")
1055+
.asRuntimeException();
1056+
}
10501057
// New format: Failure directly contains the handler error with NexusHandlerFailureInfo
10511058
// Don't wrap with NexusOperationFailureInfo - the state machine will do that if needed
10521059
failure = request.getFailure();
@@ -1159,7 +1166,7 @@ private static boolean hasFailureContent(io.temporal.api.nexus.v1.Failure failur
11591166
}
11601167

11611168
/**
1162-
* nexusFailureToAPIFailure converts a Nexus Failure to an API proto Failure. If the failure
1169+
* nexusFailureToTemporalFailure converts a Nexus Failure to an API proto Failure. If the failure
11631170
* metadata "type" field is set to the fullname of the temporal API Failure message, the failure
11641171
* is reconstructed using protojson.Unmarshal on the failure details field.
11651172
*/

temporal-test-server/src/test/java/io/temporal/testserver/functional/NexusWorkflowTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ private CompletableFuture<Request> completeNexusTask(
11021102
});
11031103
}
11041104

1105-
@SuppressWarnings("deprecation")
1105+
@SuppressWarnings("deprecation") // Uses deprecated HandlerError/setError() to test old format
11061106
private CompletableFuture<RespondNexusTaskFailedResponse> failNexusTask(
11071107
ByteString taskToken, HandlerError err) {
11081108
return CompletableFuture.supplyAsync(

temporal-test-server/src/test/java/io/temporal/testserver/functional/WorkflowIdReusePolicyTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void alreadyRunningWorkflowBlocksSecondEvenWithAllowDuplicate() {
8383
@SuppressWarnings("deprecation") // Test for deprecated policy behavior
8484
public void secondWorkflowTerminatesFirst() {
8585
String workflowId = "terminate-if-running-1";
86-
@SuppressWarnings("deprecation")
86+
@SuppressWarnings("deprecation") // Tests deprecated TERMINATE_IF_RUNNING reuse policy
8787
WorkflowOptions options =
8888
WorkflowOptions.newBuilder()
8989
.setWorkflowId(workflowId)

0 commit comments

Comments
 (0)