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() {