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 <sean....@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 <sean....@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" <commits@servicecomb.apache.org>.