Fix: do not query the distributed store inside main thread

Change-Id: I883030cb661b619f82bd554c21a48bb39f3fbbe6
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
index 8b190d0..4dd5ea7 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
@@ -304,15 +304,11 @@
 
         @Override
         public boolean isRelevant(DeviceEvent event) {
-            if (!mastershipService.isLocalMaster(event.subject().id())) {
-                // do not allow to proceed without mastership
-                return false;
-            }
-
             Port port = event.port();
             if (port == null) {
                 return false;
             }
+
             String portName = port.annotations().value(PORT_NAME);
 
             return !Strings.isNullOrEmpty(portName) &&
@@ -321,6 +317,10 @@
                             portName.startsWith(PORT_NAME_VHOST_USER_PREFIX_VM));
         }
 
+        private boolean isRelevantHelper(DeviceEvent event) {
+            return mastershipService.isLocalMaster(event.subject().id());
+        }
+
         private boolean isDirectPort(String portName) {
             return portNamePrefixMap().values().stream().anyMatch(portName::startsWith);
         }
@@ -330,17 +330,38 @@
             log.info("Device event occurred with type {}", event.type());
             switch (event.type()) {
                 case PORT_UPDATED:
-                    if (!event.port().isEnabled()) {
-                        executor.execute(() -> portRemovedHelper(event));
-                    } else if (event.port().isEnabled()) {
-                        executor.execute(() -> portAddedHelper(event));
-                    }
+                    executor.execute(() -> {
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        if (!event.port().isEnabled()) {
+                            portRemovedHelper(event);
+                        } else if (event.port().isEnabled()) {
+                            portAddedHelper(event);
+                        }
+                    });
+
                     break;
                 case PORT_ADDED:
-                    executor.execute(() -> portAddedHelper(event));
+                    executor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        portAddedHelper(event);
+                    });
                     break;
                 case PORT_REMOVED:
-                    executor.execute(() -> portRemovedHelper(event));
+                    executor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        portRemovedHelper(event);
+                    });
                     break;
                 default:
                     break;
@@ -352,10 +373,10 @@
 
         @Override
         public boolean isRelevant(OpenstackNodeEvent event) {
+            return event.subject().type() != CONTROLLER;
+        }
 
-            if (event.subject().type() == CONTROLLER) {
-                return false;
-            }
+        private boolean isRelevantHelper(OpenstackNodeEvent event) {
             // do not allow to proceed without mastership
             Device device = deviceService.getDevice(event.subject().intgBridge());
             if (device == null) {
@@ -371,7 +392,14 @@
             switch (event.type()) {
                 case OPENSTACK_NODE_COMPLETE:
                     log.info("COMPLETE node {} is detected", osNode.hostname());
-                    executor.execute(() -> processCompleteNode(event.subject()));
+                    executor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        processCompleteNode(event.subject());
+                    });
                     break;
                 case OPENSTACK_NODE_INCOMPLETE:
                     log.warn("{} is changed to INCOMPLETE state", osNode);