[Falcon] Fixed to avoid exception cases for compute node bootstrap
- Handled network config event with thread
- Considered ONOS restart situation, where node state in the store
is not the same as real state
Change-Id: Iec8c063317f1292052f299b680b7944821e60b7f
diff --git a/src/main/java/org/onosproject/cordvtn/CordVtn.java b/src/main/java/org/onosproject/cordvtn/CordVtn.java
index d56b3b6..fe196e1 100644
--- a/src/main/java/org/onosproject/cordvtn/CordVtn.java
+++ b/src/main/java/org/onosproject/cordvtn/CordVtn.java
@@ -264,13 +264,7 @@
return;
}
- NodeState state = getNodeState(node);
- if (state == null) {
- return;
- } else if (state.equals(NodeState.INCOMPLETE)) {
- state = checkNodeState(node);
- }
-
+ NodeState state = checkNodeState(node);
state.process(this, node);
}
diff --git a/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java b/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java
index f79b446..525135d 100644
--- a/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java
+++ b/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java
@@ -30,6 +30,10 @@
import org.onosproject.net.config.basics.SubjectFactories;
import org.slf4j.Logger;
+import java.util.concurrent.ExecutorService;
+
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
+import static org.onlab.util.Tools.groupedThreads;
import static org.slf4j.LoggerFactory.getLogger;
/**
@@ -63,13 +67,15 @@
};
private final NetworkConfigListener configListener = new InternalConfigListener();
-
private ApplicationId appId;
+ protected ExecutorService eventExecutor;
+
@Activate
protected void active() {
appId = coreService.getAppId(CordVtnService.CORDVTN_APP_ID);
+ eventExecutor = newSingleThreadScheduledExecutor(groupedThreads("onos/cordvtncfg", "event-handler"));
configService.addListener(configListener);
configRegistry.registerConfigFactory(configFactory);
}
@@ -78,6 +84,7 @@
protected void deactivate() {
configRegistry.unregisterConfigFactory(configFactory);
configService.removeListener(configListener);
+ eventExecutor.shutdown();
}
private void readConfiguration() {
@@ -106,11 +113,11 @@
switch (event.type()) {
case CONFIG_ADDED:
log.info("Network configuration added");
- readConfiguration();
+ eventExecutor.execute(CordVtnConfigManager.this::readConfiguration);
break;
case CONFIG_UPDATED:
log.info("Network configuration updated");
- readConfiguration();
+ eventExecutor.execute(CordVtnConfigManager.this::readConfiguration);
break;
default:
break;