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 2018/01/02 10:50:28 UTC
[incubator-servicecomb-saga] 03/06: SCB-149 checked matching of
compensation method
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 4e8c376633dd8be1760d65774b1e2a26a244a751
Author: seanyinx <se...@huawei.com>
AuthorDate: Tue Jan 2 09:11:36 2018 +0800
SCB-149 checked matching of compensation method
Signed-off-by: seanyinx <se...@huawei.com>
---
.../saga/alpha/core/TxConsistentService.java | 2 +-
.../saga/alpha/core/TxConsistentServiceTest.java | 14 +++++++-------
.../saga/alpha/server/AlphaIntegrationTest.java | 20 ++++++++++----------
3 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java b/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java
index 15f5099..34218bf 100644
--- a/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java
+++ b/alpha/alpha-core/src/main/java/io/servicecomb/saga/alpha/core/TxConsistentService.java
@@ -49,6 +49,6 @@ public class TxConsistentService {
// TODO: 2017/12/27 we must define a way to find which service to compensate, to avoid sending to all
private void compensate(TxEvent event) {
List<TxEvent> events = eventRepository.findStartedTransactions(event.globalTxId(), TxStartedEvent.name());
- events.forEach(evt -> omegaCallback.compensate(evt.globalTxId(), evt.localTxId(), event.compensationMethod(), evt.payloads()));
+ events.forEach(evt -> omegaCallback.compensate(evt.globalTxId(), evt.localTxId(), evt.compensationMethod(), evt.payloads()));
}
}
diff --git a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java b/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
index 9d9332d..635690b 100644
--- a/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
+++ b/alpha/alpha-core/src/test/java/io/servicecomb/saga/alpha/core/TxConsistentServiceTest.java
@@ -91,12 +91,12 @@ public class TxConsistentServiceTest {
@Test
public void compensateGlobalTx_OnAnyLocalTxFailure() throws Exception {
String localTxId1 = UUID.randomUUID().toString();
- events.add(eventOf(TxStartedEvent, "service a".getBytes(), localTxId1));
- events.add(eventOf(TxEndedEvent, new byte[0], localTxId1));
+ events.add(eventOf(TxStartedEvent, "service a".getBytes(), localTxId1, "method a"));
+ events.add(eventOf(TxEndedEvent, new byte[0], localTxId1, "method a"));
String localTxId2 = UUID.randomUUID().toString();
- events.add(eventOf(TxStartedEvent, "service b".getBytes(), localTxId2));
- events.add(eventOf(TxEndedEvent, new byte[0], localTxId2));
+ events.add(eventOf(TxStartedEvent, "service b".getBytes(), localTxId2, "method b"));
+ events.add(eventOf(TxEndedEvent, new byte[0], localTxId2, "method b"));
TxEvent abortEvent = newEvent(TxAbortedEvent);
@@ -104,8 +104,8 @@ public class TxConsistentServiceTest {
await().atMost(1, SECONDS).until(() -> compensationContexts.size() > 1);
assertThat(compensationContexts, containsInAnyOrder(
- new CompensationContext(globalTxId, localTxId1, compensationMethod, "service a".getBytes()),
- new CompensationContext(globalTxId, localTxId2, compensationMethod, "service b".getBytes())
+ new CompensationContext(globalTxId, localTxId1, "method a", "service a".getBytes()),
+ new CompensationContext(globalTxId, localTxId2, "method b", "service b".getBytes())
));
}
@@ -113,7 +113,7 @@ public class TxConsistentServiceTest {
return new TxEvent(serviceName, instanceId, new Date(), globalTxId, localTxId, parentTxId, eventType.name(), compensationMethod, "yeah".getBytes());
}
- private TxEvent eventOf(EventType eventType, byte[] payloads, String localTxId) {
+ private TxEvent eventOf(EventType eventType, byte[] payloads, String localTxId, String compensationMethod) {
return new TxEvent(serviceName, instanceId, new Date(),
globalTxId,
localTxId,
diff --git a/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java b/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
index 271977e..05ab8d2 100644
--- a/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
+++ b/alpha/alpha-server/src/test/java/io/servicecomb/saga/alpha/server/AlphaIntegrationTest.java
@@ -104,20 +104,20 @@ public class AlphaIntegrationTest {
@Test
public void doNotCompensateDuplicateTxOnFailure() throws Exception {
// duplicate events with same content but different timestamp
- eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes()));
- eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes()));
- eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0]));
+ eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
+ eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId, parentTxId, "service a".getBytes(), "method a"));
+ eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0], "method a"));
String localTxId1 = UUID.randomUUID().toString();
- eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId1, UUID.randomUUID().toString(), "service b".getBytes()));
- eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0]));
+ eventRepo.save(eventEnvelopeOf(TxStartedEvent, localTxId1, UUID.randomUUID().toString(), "service b".getBytes(), "method b"));
+ eventRepo.save(eventEnvelopeOf(TxEndedEvent, new byte[0], "method b"));
stub.reportEvent(someGrpcEvent(TxAbortedEvent));
await().atMost(1, SECONDS).until(() -> compensationContexts.size() > 1);
assertThat(compensationContexts, containsInAnyOrder(
- new CompensationContext(globalTxId, this.localTxId, compensationMethod, "service a".getBytes()),
- new CompensationContext(globalTxId, localTxId1, compensationMethod, "service b".getBytes())
+ new CompensationContext(globalTxId, this.localTxId, "method a", "service a".getBytes()),
+ new CompensationContext(globalTxId, localTxId1, "method b", "service b".getBytes())
));
}
@@ -135,11 +135,11 @@ public class AlphaIntegrationTest {
.build();
}
- private TxEventEnvelope eventEnvelopeOf(EventType eventType, byte[] payloads) {
- return eventEnvelopeOf(eventType, UUID.randomUUID().toString(), UUID.randomUUID().toString(), payloads);
+ private TxEventEnvelope eventEnvelopeOf(EventType eventType, byte[] payloads, String compensationMethod) {
+ return eventEnvelopeOf(eventType, UUID.randomUUID().toString(), UUID.randomUUID().toString(), payloads, compensationMethod);
}
- private TxEventEnvelope eventEnvelopeOf(EventType eventType, String localTxId, String parentTxId, byte[] payloads) {
+ private TxEventEnvelope eventEnvelopeOf(EventType eventType, String localTxId, String parentTxId, byte[] payloads, String compensationMethod) {
return new TxEventEnvelope(new TxEvent(
serviceName,
instanceId,
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.