This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4042
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/CAUSEWAY-4042 by this push:
new f0137b15c41 CAUSEWAY-4042 : further adjustments
f0137b15c41 is described below
commit f0137b15c4119a41351f10e522d1f25b242cfe2d
Author: Dan Haywood <[email protected]>
AuthorDate: Mon Jun 29 13:45:29 2026 +0100
CAUSEWAY-4042 : further adjustments
---
.../applib/dom/replay/ReplayableCommand.java | 26 ++++++++++------------
.../dom/replay/ReplayableCommandMappingTest.java | 2 +-
2 files changed, 13 insertions(+), 15 deletions(-)
diff --git
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
index 6e1a93b9c7e..2529e962ea0 100644
---
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
+++
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommand.java
@@ -625,29 +625,27 @@ CommandDto commandDtoPossiblyRemappedForReplay(final
CommandLogEntry commandLogE
}
private Try<Bookmark> tryReplay(final CommandDto commandDto) {
- var tryTryResultBookmark = replayContext.transactionService()
- .callTransactional(Propagation.REQUIRES_NEW, () ->
tryReplayCaptureOutcome(commandDto)
- );
-
- // in any outcome case (OK or FAILED) the ReplayState may have
changed, hence invalidate local cache
- invalidateCachedRecord();
-
- return tryTryResultBookmark.valueAsNullableElseFail();
- }
-
- private Try<Bookmark> tryReplayCaptureOutcome(CommandDto commandDto) {
- return Try.call(() -> {
+ var tryResultBookmark =
replayContext.transactionService().callTransactional(Propagation.REQUIRES_NEW,
() -> {
final Bookmark actualResult =
replayContext.commandExecutorService()
+ // calls transactionService which uses its own try
to potentially mark _this_ transaction for rollback.
.executeCommand(InteractionContextPolicy.SWITCH_USER_AND_TIME, commandDto)
- // if we have a replay failure, this throws, which
will roll back the surrounding transaction
+ // if we have a replay failure, this throws, which
will also roll back the surrounding transaction
.valueAsNullableElseFail();
onReplaySuccess(actualResult);
return actualResult;
})
.mapFailureToSuccess(ex -> {
- onReplayError(ex);
+ // use a new transaction to record the failure.
+
replayContext.transactionService().runTransactional(Propagation.REQUIRES_NEW,
() -> {
+ onReplayError(ex);
+ });
return null;
});
+
+ // in any outcome case (OK or FAILED) the ReplayState may have
changed, hence invalidate local cache
+ invalidateCachedRecord();
+
+ return tryResultBookmark;
}
private void invalidateCachedRecord() {
diff --git
a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
index 65b4890d1ab..8a43ede8c7a 100644
---
a/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
+++
b/extensions/core/commandlog/applib/src/test/java/org/apache/causeway/extensions/commandlog/applib/dom/replay/ReplayableCommandMappingTest.java
@@ -1040,7 +1040,7 @@ void
does_not_notify_listener_when_actual_result_is_missing() {
verify(listener, never()).onReplayResult(any(), any(), any());
}
- @Test @Disabled // TODO: CAUSEWAY-4042 ... reinstate?
+ @Test // @Disabled // TODO: CAUSEWAY-4042 ... reinstate?
void does_not_notify_listener_when_replay_fails() throws Exception {
UUID interactionId = UUID.randomUUID();
CommandDto commandDto = new CommandDto();