Check registration being closed 11/81811/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 30 Apr 2019 03:35:41 +0000 (05:35 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Tue, 30 Apr 2019 17:44:19 +0000 (17:44 +0000)
Check if the registration has been closed before firing events.
This way we stop delivering events a bit sooner, improving shutdown
speed and correctness.

JIRA: MDSAL-429
Change-Id: Id3ce6be0b8b15f4d95a3f54ac9880447a2551833
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardChangePublisher.java
dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java

index a333033c90a3f5e92d98030f9db78351aedb5e3b..ccbf366f868f70a8441fefc6478da82a78a26152 100644 (file)
@@ -34,8 +34,9 @@ final class InMemoryDOMDataTreeShardChangePublisher extends AbstractDOMShardTree
                                             final Map<DOMDataTreeIdentifier, ChildShardContext> childShards) {
         super(dataTree, rootPath, childShards);
         notificationManager = QueuedNotificationManager.create(executor, (listener, notifications) -> {
-            // FIXME: we are not checking for listener being closed
-            listener.getInstance().onDataTreeChanged(notifications);
+            if (!listener.isClosed()) {
+                listener.getInstance().onDataTreeChanged(notifications);
+            }
         }, maxQueueSize, "DataTreeChangeListenerQueueMgr");
     }
 
index 60ca3ff209297d63ba7c73fe194e051609e60d5c..fd4ff0ce2cb709e6cda209804b4e44419cea79fd 100644 (file)
@@ -35,8 +35,9 @@ final class InMemoryDOMStoreTreeChangePublisher extends AbstractDOMStoreTreeChan
 
     InMemoryDOMStoreTreeChangePublisher(final ExecutorService listenerExecutor, final int maxQueueSize) {
         notificationManager = QueuedNotificationManager.create(listenerExecutor, (listener, notifications) -> {
-            // FIXME: we are not checking for listener being closed
-            listener.getInstance().onDataTreeChanged(notifications);
+            if (!listener.isClosed()) {
+                listener.getInstance().onDataTreeChanged(notifications);
+            }
         }, maxQueueSize, "DataTreeChangeListenerQueueMgr");
     }