You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ju...@apache.org on 2017/11/20 19:59:31 UTC

aries-rsa git commit: [ARIES-1759] Fastbin fails to bind on config change

Repository: aries-rsa
Updated Branches:
  refs/heads/master 0ea1c0c37 -> a0dc13349


[ARIES-1759] Fastbin fails to bind on config change

FastBinProvider#close now waits for the server to actually shutdown
before returning (timeout of 30s)

Project: http://git-wip-us.apache.org/repos/asf/aries-rsa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-rsa/commit/a0dc1334
Tree: http://git-wip-us.apache.org/repos/asf/aries-rsa/tree/a0dc1334
Diff: http://git-wip-us.apache.org/repos/asf/aries-rsa/diff/a0dc1334

Branch: refs/heads/master
Commit: a0dc133494058704c25f6455d30faeecd0189d4b
Parents: 0ea1c0c
Author: Johannes Utzig <ju...@gmail.com>
Authored: Mon Nov 20 20:59:27 2017 +0100
Committer: Johannes Utzig <ju...@gmail.com>
Committed: Mon Nov 20 20:59:27 2017 +0100

----------------------------------------------------------------------
 .../aries/rsa/provider/fastbin/Activator.java   |  5 +++++
 .../rsa/provider/fastbin/FastBinProvider.java   | 20 ++++++++++++++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/a0dc1334/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/Activator.java
----------------------------------------------------------------------
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/Activator.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/Activator.java
index e93e873..65c03d0 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/Activator.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/Activator.java
@@ -28,13 +28,17 @@ import org.apache.aries.rsa.provider.fastbin.util.UuidGenerator;
 import org.apache.aries.rsa.spi.DistributionProvider;
 import org.osgi.service.cm.ManagedService;
 import org.osgi.service.remoteserviceadmin.RemoteConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Activator extends BaseActivator implements ManagedService {
 
+	private static final Logger LOG = LoggerFactory.getLogger(Activator.class);
     static Activator INSTANCE;
     FastBinProvider provider;
     ClientInvoker client;
     ServerInvoker server;
+    
 
     @Override
     protected void doOpen() throws Exception {
@@ -45,6 +49,7 @@ public class Activator extends BaseActivator implements ManagedService {
     protected void doStart() throws Exception {
         INSTANCE = this;
         String uri = getString("uri", "tcp://0.0.0.0:2543");
+        LOG.info("Binding Fastbin Server to {}",uri);
         String exportedAddress = getString("exportedAddress", null);
         if (exportedAddress == null) {
             exportedAddress = UuidGenerator.getHostName();

http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/a0dc1334/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/FastBinProvider.java
----------------------------------------------------------------------
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/FastBinProvider.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/FastBinProvider.java
index 4cf3be7..e9808b2 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/FastBinProvider.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/FastBinProvider.java
@@ -24,6 +24,8 @@ import java.lang.reflect.Proxy;
 import java.net.URI;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.aries.rsa.provider.fastbin.api.SerializationStrategy;
 import org.apache.aries.rsa.provider.fastbin.io.ClientInvoker;
@@ -39,9 +41,13 @@ import org.fusesource.hawtdispatch.DispatchQueue;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.remoteserviceadmin.EndpointDescription;
 import org.osgi.service.remoteserviceadmin.RemoteConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class FastBinProvider implements DistributionProvider {
 
+	private static final Logger LOG = LoggerFactory.getLogger(FastBinProvider.class);
+	
     public static final String FASTBIN_CONFIG_TYPE = "aries.fastbin";
 
     public static final String FASTBIN_ADDRESS = FASTBIN_CONFIG_TYPE + ".address";
@@ -68,8 +74,18 @@ public class FastBinProvider implements DistributionProvider {
     }
 
     public void close() {
-        client.stop();
-        server.stop();
+    	client.stop();
+    	final Semaphore counter = new Semaphore(0);
+    	server.stop(() -> {
+    		counter.release(1);
+    	});
+        try {
+        	if(!counter.tryAcquire(1, 30, TimeUnit.SECONDS)) {
+        		LOG.warn("Server/Client failed to shut down in time. Proceeding shutdown anyway...");
+        	}
+        } catch(InterruptedException e) {
+        	LOG.warn("Interrupted while waiting for Server/Client shutdown");
+        }
     }
 
     public ClientInvoker getClient() {