You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2018/01/30 13:29:32 UTC
aries-rsa git commit: [ARIES-1763] Fixes for shutdown
Repository: aries-rsa
Updated Branches:
refs/heads/master ee64f9f43 -> 2693bb8ff
[ARIES-1763] Fixes for shutdown
Project: http://git-wip-us.apache.org/repos/asf/aries-rsa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-rsa/commit/2693bb8f
Tree: http://git-wip-us.apache.org/repos/asf/aries-rsa/tree/2693bb8f
Diff: http://git-wip-us.apache.org/repos/asf/aries-rsa/diff/2693bb8f
Branch: refs/heads/master
Commit: 2693bb8ffcf0958c459bf46e9bb54f12ca80328b
Parents: ee64f9f
Author: Christian Schneider <cs...@adobe.com>
Authored: Tue Jan 30 14:29:26 2018 +0100
Committer: Christian Schneider <cs...@adobe.com>
Committed: Tue Jan 30 14:29:26 2018 +0100
----------------------------------------------------------------------
.../rsa/topologymanager/importer/MultiMap.java | 4 +++
.../importer/TopologyManagerImport.java | 15 +++++++++-
.../importer/local/EndpointListenerManager.java | 29 ++++++++++++++------
.../importer/TopologyManagerImportTest.java | 2 ++
4 files changed, 40 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/2693bb8f/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
index 13597b5..e1cc190 100644
--- a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
+++ b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
@@ -66,4 +66,8 @@ public class MultiMap<T> {
remove(key, toRemove);
}
}
+
+ public void clear() {
+ map.clear();
+ }
}
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/2693bb8f/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
index 8e1a1b7..5129223 100644
--- a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
+++ b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
@@ -51,7 +51,7 @@ public class TopologyManagerImport implements EndpointEventListener, RemoteServi
private final BundleContext bctx;
private Set<RemoteServiceAdmin> rsaSet;
-
+ private boolean stopped;
/**
* List of Endpoints by matched filter that were reported by the EndpointListener and can be imported
@@ -72,11 +72,21 @@ public class TopologyManagerImport implements EndpointEventListener, RemoteServi
}
public void start() {
+ stopped = false;
bctx.registerService(RemoteServiceAdminListener.class, this, null);
}
public void stop() {
+ stopped = true;
execService.shutdown();
+ closeAllImports();
+ }
+
+ private void closeAllImports() {
+ importPossibilities.clear();
+ for (String filter : importedServices.keySet()) {
+ unImportForGoneEndpoints(filter);
+ }
}
public void add(RemoteServiceAdmin rsa) {
@@ -196,6 +206,9 @@ public class TopologyManagerImport implements EndpointEventListener, RemoteServi
@Override
public void endpointChanged(EndpointEvent event, String filter) {
+ if (stopped) {
+ return;
+ }
EndpointDescription endpoint = event.getEndpoint();
LOG.debug("Endpoint event received type {}, filter {}, endpoint {}", event.getType(), filter, endpoint);
switch (event.getType()) {
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/2693bb8f/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/local/EndpointListenerManager.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/local/EndpointListenerManager.java b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/local/EndpointListenerManager.java
index 0731aab..a14394c 100644
--- a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/local/EndpointListenerManager.java
+++ b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/local/EndpointListenerManager.java
@@ -85,9 +85,9 @@ public class EndpointListenerManager implements ServiceInterestListener{
public void start() {
EndpointListener endpointListenerAdapter = new EndpointListenerAdapter();
serviceRegistration = bctx.registerService(EndpointListener.class, endpointListenerAdapter,
- getRegistrationProperties());
+ getELProperties());
serviceRegistration2 = bctx.registerService(EndpointEventListener.class, endpointListener,
- getRegistrationProperties());
+ getEELProperties());
bctx.registerService(ListenerHook.class, listenerHook, null);
bctx.registerService(FindHook.class, findHook, null);
@@ -124,21 +124,32 @@ public class EndpointListenerManager implements ServiceInterestListener{
updateRegistration();
}
- private Dictionary<String, Object> getRegistrationProperties() {
+ private Dictionary<String, Object> getELProperties() {
Dictionary<String, Object> p = new Hashtable<String, Object>();
-
+ p.put(EndpointListener.ENDPOINT_LISTENER_SCOPE, copyFilters());
+ return p;
+ }
+
+ private Dictionary<String, Object> getEELProperties() {
+ Dictionary<String, Object> p = new Hashtable<String, Object>();
+ p.put(EndpointEventListener.ENDPOINT_LISTENER_SCOPE, copyFilters());
+ return p;
+ }
+
+ public List<String> copyFilters() {
synchronized (filters) {
- LOG.debug("Current filter: {}", filters);
- p.put(EndpointListener.ENDPOINT_LISTENER_SCOPE, new ArrayList<String>(filters));
+ return new ArrayList<>(filters);
}
-
- return p;
}
private void updateRegistration() {
if (serviceRegistration != null) {
- serviceRegistration.setProperties(getRegistrationProperties());
+ serviceRegistration.setProperties(getELProperties());
}
+ if (serviceRegistration2 != null) {
+ serviceRegistration2.setProperties(getEELProperties());
+ }
+
}
@Override
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/2693bb8f/topology-manager/src/test/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImportTest.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/test/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImportTest.java b/topology-manager/src/test/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImportTest.java
index 32ba737..b5b8759 100644
--- a/topology-manager/src/test/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImportTest.java
+++ b/topology-manager/src/test/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImportTest.java
@@ -54,6 +54,8 @@ public class TopologyManagerImportTest {
return ir;
}
}).once();
+ ir.close();
+ EasyMock.expectLastCall();
c.replay();
TopologyManagerImport tm = new TopologyManagerImport(bc);