Committed by
Gerrit Code Review
[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
Showing
2 changed files
with
11 additions
and
10 deletions
... | @@ -264,13 +264,7 @@ public class CordVtn implements CordVtnService { | ... | @@ -264,13 +264,7 @@ public class CordVtn implements CordVtnService { |
264 | return; | 264 | return; |
265 | } | 265 | } |
266 | 266 | ||
267 | - NodeState state = getNodeState(node); | 267 | + NodeState state = checkNodeState(node); |
268 | - if (state == null) { | ||
269 | - return; | ||
270 | - } else if (state.equals(NodeState.INCOMPLETE)) { | ||
271 | - state = checkNodeState(node); | ||
272 | - } | ||
273 | - | ||
274 | state.process(this, node); | 268 | state.process(this, node); |
275 | } | 269 | } |
276 | 270 | ... | ... |
... | @@ -30,6 +30,10 @@ import org.onosproject.net.config.NetworkConfigService; | ... | @@ -30,6 +30,10 @@ import org.onosproject.net.config.NetworkConfigService; |
30 | import org.onosproject.net.config.basics.SubjectFactories; | 30 | import org.onosproject.net.config.basics.SubjectFactories; |
31 | import org.slf4j.Logger; | 31 | import org.slf4j.Logger; |
32 | 32 | ||
33 | +import java.util.concurrent.ExecutorService; | ||
34 | + | ||
35 | +import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ||
36 | +import static org.onlab.util.Tools.groupedThreads; | ||
33 | import static org.slf4j.LoggerFactory.getLogger; | 37 | import static org.slf4j.LoggerFactory.getLogger; |
34 | 38 | ||
35 | /** | 39 | /** |
... | @@ -63,13 +67,15 @@ public class CordVtnConfigManager { | ... | @@ -63,13 +67,15 @@ public class CordVtnConfigManager { |
63 | }; | 67 | }; |
64 | 68 | ||
65 | private final NetworkConfigListener configListener = new InternalConfigListener(); | 69 | private final NetworkConfigListener configListener = new InternalConfigListener(); |
66 | - | ||
67 | private ApplicationId appId; | 70 | private ApplicationId appId; |
71 | + protected ExecutorService eventExecutor; | ||
72 | + | ||
68 | 73 | ||
69 | @Activate | 74 | @Activate |
70 | protected void active() { | 75 | protected void active() { |
71 | appId = coreService.getAppId(CordVtnService.CORDVTN_APP_ID); | 76 | appId = coreService.getAppId(CordVtnService.CORDVTN_APP_ID); |
72 | 77 | ||
78 | + eventExecutor = newSingleThreadScheduledExecutor(groupedThreads("onos/cordvtncfg", "event-handler")); | ||
73 | configService.addListener(configListener); | 79 | configService.addListener(configListener); |
74 | configRegistry.registerConfigFactory(configFactory); | 80 | configRegistry.registerConfigFactory(configFactory); |
75 | } | 81 | } |
... | @@ -78,6 +84,7 @@ public class CordVtnConfigManager { | ... | @@ -78,6 +84,7 @@ public class CordVtnConfigManager { |
78 | protected void deactivate() { | 84 | protected void deactivate() { |
79 | configRegistry.unregisterConfigFactory(configFactory); | 85 | configRegistry.unregisterConfigFactory(configFactory); |
80 | configService.removeListener(configListener); | 86 | configService.removeListener(configListener); |
87 | + eventExecutor.shutdown(); | ||
81 | } | 88 | } |
82 | 89 | ||
83 | private void readConfiguration() { | 90 | private void readConfiguration() { |
... | @@ -106,11 +113,11 @@ public class CordVtnConfigManager { | ... | @@ -106,11 +113,11 @@ public class CordVtnConfigManager { |
106 | switch (event.type()) { | 113 | switch (event.type()) { |
107 | case CONFIG_ADDED: | 114 | case CONFIG_ADDED: |
108 | log.info("Network configuration added"); | 115 | log.info("Network configuration added"); |
109 | - readConfiguration(); | 116 | + eventExecutor.execute(CordVtnConfigManager.this::readConfiguration); |
110 | break; | 117 | break; |
111 | case CONFIG_UPDATED: | 118 | case CONFIG_UPDATED: |
112 | log.info("Network configuration updated"); | 119 | log.info("Network configuration updated"); |
113 | - readConfiguration(); | 120 | + eventExecutor.execute(CordVtnConfigManager.this::readConfiguration); |
114 | break; | 121 | break; |
115 | default: | 122 | default: |
116 | break; | 123 | break; | ... | ... |
-
Please register or login to post a comment