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


The following commit(s) were added to refs/heads/master by this push:
     new 5580cfd  * SCB-856 Fixed the way to remove specific OmegaCallback.
5580cfd is described below

commit 5580cfd1e89b0d73d00f275c4280b996b8fb6c10
Author: Chenhaoqing <[email protected]>
AuthorDate: Mon Sep 3 20:56:18 2018 +0800

    * SCB-856 Fixed the way to remove specific OmegaCallback.
---
 .../saga/alpha/server/tcc/callback/OmegaCallbackWrapper.java  |  2 +-
 .../alpha/server/tcc/registry/OmegaCallbacksRegistry.java     | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/callback/OmegaCallbackWrapper.java
 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/callback/OmegaCallbackWrapper.java
index 62c183a..dd98b1a 100644
--- 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/callback/OmegaCallbackWrapper.java
+++ 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/callback/OmegaCallbackWrapper.java
@@ -29,7 +29,7 @@ public class OmegaCallbackWrapper implements OmegaCallback {
     try {
       omegaCallback.invoke(event, status);
     } catch (Exception ex) {
-      OmegaCallbacksRegistry.removeByValue(event.getServiceName(), 
omegaCallback);
+      OmegaCallbacksRegistry.remove(event.getServiceName(), 
event.getInstanceId());
       throw ex;
     }
   }
diff --git 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/registry/OmegaCallbacksRegistry.java
 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/registry/OmegaCallbacksRegistry.java
index 02340b2..feb9026 100644
--- 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/registry/OmegaCallbacksRegistry.java
+++ 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/tcc/registry/OmegaCallbacksRegistry.java
@@ -77,9 +77,14 @@ public final class OmegaCallbacksRegistry {
     return result;
   }
 
-  public static void removeByValue(String serviceName, OmegaCallback 
omegaCallback) {
-    Map<String, OmegaCallback> callbackMap = 
REGISTRY.getOrDefault(serviceName, emptyMap());
-    callbackMap.values().remove(omegaCallback);
+  /**
+   * Remove omega TCC callback by service name and instance id.
+   *
+   * @param serviceName service name
+   * @param instanceId instance id
+   */
+  public static void remove(String serviceName, String instanceId) {
+    REGISTRY.getOrDefault(serviceName, emptyMap()).remove(instanceId);
   }
 
   /**

Reply via email to