You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2017/12/25 10:36:36 UTC
[incubator-servicecomb-saga] 12/14: SCB-96 made sure context is
cleaned up on compensation
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 489e8c05d0551b4d5480a9ea8666606e5e0f8428
Author: seanyinx <se...@huawei.com>
AuthorDate: Sat Dec 23 17:58:44 2017 +0800
SCB-96 made sure context is cleaned up on compensation
Signed-off-by: seanyinx <se...@huawei.com>
---
.../java/io/servicecomb/saga/omega/context/OmegaContext.java | 9 ++++++++-
.../omega/transaction/spring/TransactionInterceptionTest.java | 2 ++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java
index 8b41d9a..17c6246 100644
--- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java
+++ b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java
@@ -57,6 +57,10 @@ public class OmegaContext {
compensationContexts.put(id, new CompensationContext(target, compensationMethod, args));
}
+ public boolean containsContext(String globalTxId) {
+ return compensationContexts.containsKey(globalTxId);
+ }
+
public void compensate(String globalTxId) {
CompensationContext compensationContext = compensationContexts.get(globalTxId);
@@ -64,8 +68,11 @@ public class OmegaContext {
invokeMethod(compensationContext);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
throw new IllegalStateException(
- "Pre-checking for compensate method " + compensationContext.compensationMethod + " was somehow skipped",
+ "Pre-checking for compensate method " + compensationContext.compensationMethod
+ + " was somehow skipped, did you forget to configure compensable method checking on service startup?",
e);
+ } finally {
+ compensationContexts.remove(globalTxId);
}
}
diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
index 27ee479..dc80f2f 100644
--- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
+++ b/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
@@ -108,6 +108,8 @@ public class TransactionInterceptionTest {
User actual = userRepository.findOne(user.id());
assertThat(actual, is(nullValue()));
+
+ assertThat(omegaContext.containsContext(globalTxId), is(false));
}
private List<String> toString(List<byte[]> messages) {
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.