Fixing bug where WITHDRAWN intents get added to ObjectiveTracker
Change-Id: I4c16fe749ab30fdc4fbb96854cade0c292a3f8da
Showing
1 changed file
with
7 additions
and
2 deletions
| ... | @@ -76,6 +76,7 @@ import static org.onlab.util.Tools.groupedThreads; | ... | @@ -76,6 +76,7 @@ import static org.onlab.util.Tools.groupedThreads; |
| 76 | import static org.onlab.util.Tools.isNullOrEmpty; | 76 | import static org.onlab.util.Tools.isNullOrEmpty; |
| 77 | import static org.onosproject.net.LinkKey.linkKey; | 77 | import static org.onosproject.net.LinkKey.linkKey; |
| 78 | import static org.onosproject.net.intent.IntentState.INSTALLED; | 78 | import static org.onosproject.net.intent.IntentState.INSTALLED; |
| 79 | +import static org.onosproject.net.intent.IntentState.INSTALLING; | ||
| 79 | import static org.onosproject.net.link.LinkEvent.Type.LINK_REMOVED; | 80 | import static org.onosproject.net.link.LinkEvent.Type.LINK_REMOVED; |
| 80 | import static org.onosproject.net.link.LinkEvent.Type.LINK_UPDATED; | 81 | import static org.onosproject.net.link.LinkEvent.Type.LINK_UPDATED; |
| 81 | import static org.slf4j.LoggerFactory.getLogger; | 82 | import static org.slf4j.LoggerFactory.getLogger; |
| ... | @@ -212,13 +213,15 @@ public class ObjectiveTracker implements ObjectiveTrackerService { | ... | @@ -212,13 +213,15 @@ public class ObjectiveTracker implements ObjectiveTrackerService { |
| 212 | Key key = intentData.key(); | 213 | Key key = intentData.key(); |
| 213 | Intent intent = intentData.intent(); | 214 | Intent intent = intentData.intent(); |
| 214 | boolean isLocal = intentService.isLocal(key); | 215 | boolean isLocal = intentService.isLocal(key); |
| 216 | + boolean isInstalled = intentData.state() == INSTALLING || | ||
| 217 | + intentData.state() == INSTALLED; | ||
| 215 | List<Intent> installables = intentData.installables(); | 218 | List<Intent> installables = intentData.installables(); |
| 216 | 219 | ||
| 217 | if (log.isTraceEnabled()) { | 220 | if (log.isTraceEnabled()) { |
| 218 | log.trace("intent {}, old: {}, new: {}, installableCount: {}, resourceCount: {}", | 221 | log.trace("intent {}, old: {}, new: {}, installableCount: {}, resourceCount: {}", |
| 219 | key, | 222 | key, |
| 220 | intentsByDevice.values().contains(key), | 223 | intentsByDevice.values().contains(key), |
| 221 | - isLocal, | 224 | + isLocal && isInstalled, |
| 222 | installables.size(), | 225 | installables.size(), |
| 223 | intent.resources().size() + | 226 | intent.resources().size() + |
| 224 | installables.stream() | 227 | installables.stream() |
| ... | @@ -229,7 +232,9 @@ public class ObjectiveTracker implements ObjectiveTrackerService { | ... | @@ -229,7 +232,9 @@ public class ObjectiveTracker implements ObjectiveTrackerService { |
| 229 | log.warn("Intent {} is INSTALLED with no installables", key); | 232 | log.warn("Intent {} is INSTALLED with no installables", key); |
| 230 | } | 233 | } |
| 231 | 234 | ||
| 232 | - if (isLocal) { | 235 | + // FIXME Intents will be added 3 times (once directly using addTracked, |
| 236 | + // then when installing and when installed) | ||
| 237 | + if (isLocal && isInstalled) { | ||
| 233 | addTrackedResources(key, intent.resources()); | 238 | addTrackedResources(key, intent.resources()); |
| 234 | for (Intent installable : installables) { | 239 | for (Intent installable : installables) { |
| 235 | addTrackedResources(key, installable.resources()); | 240 | addTrackedResources(key, installable.resources()); | ... | ... |
-
Please register or login to post a comment