From 703bcf65a6b3a226d47f76204ab40331cac93f8a Mon Sep 17 00:00:00 2001 From: Marco Bungart Date: Sat, 9 Sep 2023 17:14:11 +0200 Subject: [PATCH] #35806: add new property quarkus.transaction-manager.xa-assume-restore-complete to allow --- .../jta/deployment/NarayanaJtaProcessor.java | 15 +++++++++++++-- ...ransactionManagerBuildTimeConfiguration.java | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/TransactionManagerBuildTimeConfiguration.java diff --git a/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/NarayanaJtaProcessor.java b/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/NarayanaJtaProcessor.java index 396279af870c04..adbfc85505aecb 100644 --- a/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/NarayanaJtaProcessor.java +++ b/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/NarayanaJtaProcessor.java @@ -57,6 +57,7 @@ import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.deployment.builditem.ShutdownContextBuildItem; +import io.quarkus.deployment.builditem.SystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageSystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; @@ -80,8 +81,18 @@ class NarayanaJtaProcessor { private static final String TEST_TRANSACTION = "io.quarkus.test.TestTransaction"; @BuildStep - public NativeImageSystemPropertyBuildItem nativeImageSystemPropertyBuildItem() { - return new NativeImageSystemPropertyBuildItem("CoordinatorEnvironmentBean.transactionStatusManagerEnable", "false"); + public List nativeImageSystemPropertyBuildItem( + TransactionManagerBuildTimeConfiguration buildTimeTransactions) { + return List.of( + new NativeImageSystemPropertyBuildItem("CoordinatorEnvironmentBean.transactionStatusManagerEnable", "false"), + new NativeImageSystemPropertyBuildItem("com.arjuna.ats.jta.xaAssumeRecoveryComplete", + Boolean.toString(buildTimeTransactions.xaAssumeRestoreComplete))); + } + + @BuildStep + public SystemPropertyBuildItem systemPropertyBuildItem(TransactionManagerBuildTimeConfiguration buildTimeTransactions) { + return new SystemPropertyBuildItem("com.arjuna.ats.jta.xaAssumeRecoveryComplete", + Boolean.toString(buildTimeTransactions.xaAssumeRestoreComplete)); } @BuildStep diff --git a/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/TransactionManagerBuildTimeConfiguration.java b/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/TransactionManagerBuildTimeConfiguration.java new file mode 100644 index 00000000000000..fc69a728f87ec9 --- /dev/null +++ b/extensions/narayana-jta/deployment/src/main/java/io/quarkus/narayana/jta/deployment/TransactionManagerBuildTimeConfiguration.java @@ -0,0 +1,17 @@ +package io.quarkus.narayana.jta.deployment; + +import io.quarkus.runtime.annotations.ConfigItem; +import io.quarkus.runtime.annotations.ConfigPhase; +import io.quarkus.runtime.annotations.ConfigRoot; + +/** + * + */ +@ConfigRoot(name = "transaction-manager", phase = ConfigPhase.BUILD_TIME) +public final class TransactionManagerBuildTimeConfiguration { + /** + * Assume recovery complete when transactions cannot be recovered. + */ + @ConfigItem(defaultValue = "false") + public boolean xaAssumeRestoreComplete; +}