You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by se...@apache.org on 2018/01/11 06:56:07 UTC
[incubator-servicecomb-saga] 03/04: SCB-213 use HashSet to avoid
unnecessary lock
This is an automated email from the ASF dual-hosted git repository.
seanyinx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 3468f32749c1708be583b065730550da4f9f85b7
Author: Eric Lee <da...@huawei.com>
AuthorDate: Thu Jan 11 11:04:45 2018 +0800
SCB-213 use HashSet to avoid unnecessary lock
Signed-off-by: Eric Lee <da...@huawei.com>
---
.../servicecomb/saga/alpha/core/TxConsistentService.java | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
index 1805335..f22a885 100644
--- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java
@@ -24,12 +24,12 @@ import static org.apache.servicecomb.saga.alpha.core.EventType.TxStartedEvent;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
import java.util.function.Consumer;
public class TxConsistentService {
@@ -61,8 +61,8 @@ public class TxConsistentService {
List<TxEvent> events = eventRepository.findStartedTransactions(event.globalTxId(), TxStartedEvent.name());
events.forEach(omegaCallback::compensate);
eventsToCompensate.computeIfAbsent(event.globalTxId(), (v) -> {
- CopyOnWriteArraySet<String> eventSet = new CopyOnWriteArraySet<>();
- events.forEach(e -> eventSet.add(getUniqueEventId(e)));
+ Set<String> eventSet = new HashSet<>(events.size());
+ events.forEach(e -> eventSet.add(e.localTxId()));
return eventSet;
});
}
@@ -70,17 +70,13 @@ public class TxConsistentService {
private void updateCompensateStatus(TxEvent event) {
Set<String> events = eventsToCompensate.get(event.globalTxId());
if (events != null) {
- events.remove(getUniqueEventId(event));
+ events.remove(event.localTxId());
if (events.isEmpty()) {
markGlobalTxEnd(event);
}
}
}
- private String getUniqueEventId(TxEvent event) {
- return event.globalTxId() + "_" + event.localTxId();
- }
-
private void markGlobalTxEnd(TxEvent event) {
eventRepository.save(new TxEvent(
event.serviceName(), event.instanceId(), new Date(), event.globalTxId(), event.globalTxId(),
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.