Fix: resolve thread blocking issue caused by querying dist store

Change-Id: Ifddf7eb07a4430af11ca64e8eb2098369fc7db6c
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
index 54a0c19..98ee29e 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
@@ -642,20 +642,23 @@
         public boolean isRelevant(DeviceEvent event) {
             NodeId leader = leadershipService.getLeader(appId.name());
             return Objects.equals(localNode, leader) &&
-                    event.subject().type() == Device.Type.CONTROLLER &&
-                    osNodeService.node(event.subject().id()) != null &&
-                    osNodeService.node(event.subject().id()).type() != CONTROLLER;
+                    event.subject().type() == Device.Type.CONTROLLER;
         }
 
         @Override
         public void event(DeviceEvent event) {
             Device device = event.subject();
-            OpenstackNode osNode = osNodeService.node(device.id());
 
             switch (event.type()) {
                 case DEVICE_AVAILABILITY_CHANGED:
                 case DEVICE_ADDED:
                     eventExecutor.execute(() -> {
+                        OpenstackNode osNode = osNodeService.node(device.id());
+
+                        if (osNode == null || osNode.type() == CONTROLLER) {
+                            return;
+                        }
+
                         if (deviceService.isAvailable(device.id())) {
                             log.debug("OVSDB {} detected", device.id());
                             bootstrapNode(osNode);
@@ -684,20 +687,23 @@
         public boolean isRelevant(DeviceEvent event) {
             NodeId leader = leadershipService.getLeader(appId.name());
             return Objects.equals(localNode, leader) &&
-                    event.subject().type() == Device.Type.SWITCH &&
-                    osNodeService.node(event.subject().id()) != null &&
-                    osNodeService.node(event.subject().id()).type() != CONTROLLER;
+                    event.subject().type() == Device.Type.SWITCH;
         }
 
         @Override
         public void event(DeviceEvent event) {
             Device device = event.subject();
-            OpenstackNode osNode = osNodeService.node(device.id());
 
             switch (event.type()) {
                 case DEVICE_AVAILABILITY_CHANGED:
                 case DEVICE_ADDED:
                     eventExecutor.execute(() -> {
+                        OpenstackNode osNode = osNodeService.node(device.id());
+
+                        if (osNode == null || osNode.type() == CONTROLLER) {
+                            return;
+                        }
+
                         if (deviceService.isAvailable(device.id())) {
                             log.debug("Integration bridge created on {}", osNode.hostname());
                             bootstrapNode(osNode);
@@ -719,6 +725,12 @@
                 case PORT_UPDATED:
                 case PORT_ADDED:
                     eventExecutor.execute(() -> {
+                        OpenstackNode osNode = osNodeService.node(device.id());
+
+                        if (osNode == null || osNode.type() == CONTROLLER) {
+                            return;
+                        }
+
                         Port port = event.port();
                         String portName = port.annotations().value(PORT_NAME);
                         if (osNode.state() == DEVICE_CREATED && (
@@ -735,6 +747,12 @@
                     break;
                 case PORT_REMOVED:
                     eventExecutor.execute(() -> {
+                        OpenstackNode osNode = osNodeService.node(device.id());
+
+                        if (osNode == null || osNode.type() == CONTROLLER) {
+                            return;
+                        }
+
                         Port port = event.port();
                         String portName = port.annotations().value(PORT_NAME);
                         if (osNode.state() == COMPLETE && (