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>.