ONOS-3599 Fixed exceptions during link provider activation.
Change-Id: I423b24dc27c1d53975d7ced933d803dda052a421
Showing
1 changed file
with
16 additions
and
4 deletions
| ... | @@ -45,6 +45,7 @@ import org.apache.felix.scr.annotations.Property; | ... | @@ -45,6 +45,7 @@ import org.apache.felix.scr.annotations.Property; |
| 45 | import org.apache.felix.scr.annotations.Reference; | 45 | import org.apache.felix.scr.annotations.Reference; |
| 46 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 46 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
| 47 | import org.onlab.packet.Ethernet; | 47 | import org.onlab.packet.Ethernet; |
| 48 | +import org.onlab.util.Tools; | ||
| 48 | import org.onosproject.cfg.ComponentConfigService; | 49 | import org.onosproject.cfg.ComponentConfigService; |
| 49 | import org.onosproject.cluster.ClusterService; | 50 | import org.onosproject.cluster.ClusterService; |
| 50 | import org.onosproject.core.ApplicationId; | 51 | import org.onosproject.core.ApplicationId; |
| ... | @@ -77,6 +78,7 @@ import org.onosproject.net.packet.PacketProcessor; | ... | @@ -77,6 +78,7 @@ import org.onosproject.net.packet.PacketProcessor; |
| 77 | import org.onosproject.net.packet.PacketService; | 78 | import org.onosproject.net.packet.PacketService; |
| 78 | import org.onosproject.net.provider.AbstractProvider; | 79 | import org.onosproject.net.provider.AbstractProvider; |
| 79 | import org.onosproject.net.provider.ProviderId; | 80 | import org.onosproject.net.provider.ProviderId; |
| 81 | +import org.onosproject.store.service.ConsistentMapException; | ||
| 80 | import org.osgi.service.component.ComponentContext; | 82 | import org.osgi.service.component.ComponentContext; |
| 81 | import org.slf4j.Logger; | 83 | import org.slf4j.Logger; |
| 82 | 84 | ||
| ... | @@ -99,6 +101,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { | ... | @@ -99,6 +101,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { |
| 99 | // When a Device/Port has this annotation, do not send out LLDP/BDDP | 101 | // When a Device/Port has this annotation, do not send out LLDP/BDDP |
| 100 | public static final String NO_LLDP = "no-lldp"; | 102 | public static final String NO_LLDP = "no-lldp"; |
| 101 | 103 | ||
| 104 | + private static final int MAX_RETRIES = 5; | ||
| 105 | + private static final int RETRY_DELAY = 1_000; // millis | ||
| 106 | + | ||
| 102 | private final Logger log = getLogger(getClass()); | 107 | private final Logger log = getLogger(getClass()); |
| 103 | 108 | ||
| 104 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 109 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| ... | @@ -227,10 +232,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { | ... | @@ -227,10 +232,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { |
| 227 | SuppressionConfig cfg = cfgRegistry.getConfig(appId, SuppressionConfig.class); | 232 | SuppressionConfig cfg = cfgRegistry.getConfig(appId, SuppressionConfig.class); |
| 228 | if (cfg == null) { | 233 | if (cfg == null) { |
| 229 | // If no configuration is found, register default. | 234 | // If no configuration is found, register default. |
| 230 | - cfg = cfgRegistry.addConfig(appId, SuppressionConfig.class); | 235 | + cfg = Tools.retryable(this::setDefaultSuppressionConfig, |
| 231 | - cfg.deviceTypes(DEFAULT_RULES.getSuppressedDeviceType()) | 236 | + ConsistentMapException.class, |
| 232 | - .annotation(DEFAULT_RULES.getSuppressedAnnotation()) | 237 | + MAX_RETRIES, RETRY_DELAY).get(); |
| 233 | - .apply(); | ||
| 234 | } | 238 | } |
| 235 | cfgListener.reconfigureSuppressionRules(cfg); | 239 | cfgListener.reconfigureSuppressionRules(cfg); |
| 236 | 240 | ||
| ... | @@ -238,6 +242,14 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { | ... | @@ -238,6 +242,14 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { |
| 238 | log.info("Started"); | 242 | log.info("Started"); |
| 239 | } | 243 | } |
| 240 | 244 | ||
| 245 | + private SuppressionConfig setDefaultSuppressionConfig() { | ||
| 246 | + SuppressionConfig cfg = cfgRegistry.addConfig(appId, SuppressionConfig.class); | ||
| 247 | + cfg.deviceTypes(DEFAULT_RULES.getSuppressedDeviceType()) | ||
| 248 | + .annotation(DEFAULT_RULES.getSuppressedAnnotation()) | ||
| 249 | + .apply(); | ||
| 250 | + return cfg; | ||
| 251 | + } | ||
| 252 | + | ||
| 241 | @Deactivate | 253 | @Deactivate |
| 242 | public void deactivate() { | 254 | public void deactivate() { |
| 243 | cfgRegistry.removeListener(cfgListener); | 255 | cfgRegistry.removeListener(cfgListener); | ... | ... |
-
Please register or login to post a comment