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/OpenstackRoutingHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
index af81c2f..a76961b 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingHandler.java
@@ -950,11 +950,8 @@
 
     private class InternalRouterEventListener implements OpenstackRouterListener {
 
-        @Override
-        public boolean isRelevant(OpenstackRouterEvent event) {
-            // do not allow to proceed without leadership
-            NodeId leader = leadershipService.getLeader(appId.name());
-            return Objects.equals(localNodeId, leader);
+        private boolean isRelevantHelper() {
+            return Objects.equals(localNodeId, leadershipService.getLeader(appId.name()));
         }
 
         // FIXME only one leader in the cluster should process
@@ -965,27 +962,53 @@
                     log.debug("Router(name:{}, ID:{}) is created",
                             event.subject().getName(),
                             event.subject().getId());
-                    eventExecutor.execute(() -> routerUpdated(event.subject()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
+                        routerUpdated(event.subject());
+                    });
                     break;
                 case OPENSTACK_ROUTER_UPDATED:
                     log.debug("Router(name:{}, ID:{}) is updated",
                             event.subject().getName(),
                             event.subject().getId());
-                    eventExecutor.execute(() -> routerUpdated(event.subject()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
+                        routerUpdated(event.subject());
+                    });
                     break;
                 case OPENSTACK_ROUTER_REMOVED:
                     log.debug("Router(name:{}, ID:{}) is removed",
                             event.subject().getName(),
                             event.subject().getId());
-                    eventExecutor.execute(() -> routerRemove(event.subject()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
+                        routerRemove(event.subject());
+                    });
                     break;
                 case OPENSTACK_ROUTER_INTERFACE_ADDED:
                     log.debug("Router interface {} added to router {}",
                             event.routerIface().getPortId(),
                             event.routerIface().getId());
-                    eventExecutor.execute(() -> routerIfaceAdded(
-                            event.subject(),
-                            event.routerIface()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
+                        routerIfaceAdded(event.subject(), event.routerIface());
+                    });
                     break;
                 case OPENSTACK_ROUTER_INTERFACE_UPDATED:
                     log.debug("Router interface {} on {} updated",
@@ -996,9 +1019,14 @@
                     log.debug("Router interface {} removed from router {}",
                             event.routerIface().getPortId(),
                             event.routerIface().getId());
-                    eventExecutor.execute(() -> routerIfaceRemoved(
-                            event.subject(),
-                            event.routerIface()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
+                        routerIfaceRemoved(event.subject(), event.routerIface());
+                    });
                     break;
                 case OPENSTACK_ROUTER_GATEWAY_ADDED:
                     log.debug("Router external gateway {} added",
@@ -1022,11 +1050,8 @@
 
     private class InternalNodeEventListener implements OpenstackNodeListener {
 
-        @Override
-        public boolean isRelevant(OpenstackNodeEvent event) {
-            // do not allow to proceed without leadership
-            NodeId leader = leadershipService.getLeader(appId.name());
-            return Objects.equals(localNodeId, leader);
+        private boolean isRelevantHelper() {
+            return Objects.equals(localNodeId, leadershipService.getLeader(appId.name()));
         }
 
         @Override
@@ -1040,6 +1065,11 @@
                 case OPENSTACK_NODE_REMOVED:
                     eventExecutor.execute(() -> {
                         log.info("Reconfigure routers for {}", osNode.hostname());
+
+                        if (!isRelevantHelper()) {
+                            return;
+                        }
+
                         reconfigureRouters();
                     });
                     break;
@@ -1061,10 +1091,8 @@
 
     private class InternalInstancePortListener implements InstancePortListener {
 
-        @Override
-        public boolean isRelevant(InstancePortEvent event) {
-            InstancePort instPort = event.subject();
-            return mastershipService.isLocalMaster(instPort.deviceId());
+        private boolean isRelevantHelper(InstancePortEvent event) {
+            return mastershipService.isLocalMaster(event.subject().deviceId());
         }
 
         @Override
@@ -1077,7 +1105,14 @@
                                                             instPort.macAddress(),
                                                             instPort.ipAddress());
 
-                    eventExecutor.execute(() -> instPortDetected(event.subject()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        instPortDetected(event.subject());
+                    });
 
                     break;
                 case OPENSTACK_INSTANCE_PORT_VANISHED:
@@ -1085,7 +1120,14 @@
                                                             instPort.macAddress(),
                                                             instPort.ipAddress());
 
-                    eventExecutor.execute(() -> instPortRemoved(event.subject()));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        instPortRemoved(event.subject());
+                    });
 
                     break;
                 case OPENSTACK_INSTANCE_MIGRATION_STARTED:
@@ -1093,7 +1135,14 @@
                                                             instPort.macAddress(),
                                                             instPort.ipAddress());
 
-                    eventExecutor.execute(() -> instPortDetected(instPort));
+                    eventExecutor.execute(() -> {
+
+                        if (!isRelevantHelper(event)) {
+                            return;
+                        }
+
+                        instPortDetected(instPort);
+                    });
 
                     break;
                 case OPENSTACK_INSTANCE_MIGRATION_ENDED: