Thomas Vachuska
Committed by Gerrit Code Review

Fixing various exception issues.

Change-Id: Ic02d66c2ebceda8c05f93b367aa9ff38a11a7a5b
...@@ -22,6 +22,7 @@ import org.apache.felix.scr.annotations.Component; ...@@ -22,6 +22,7 @@ import org.apache.felix.scr.annotations.Component;
22 import org.apache.felix.scr.annotations.Reference; 22 import org.apache.felix.scr.annotations.Reference;
23 import org.apache.felix.scr.annotations.ReferenceCardinality; 23 import org.apache.felix.scr.annotations.ReferenceCardinality;
24 import org.apache.felix.scr.annotations.Service; 24 import org.apache.felix.scr.annotations.Service;
25 +import org.onlab.util.Tools;
25 import org.onosproject.net.newresource.ResourceConsumer; 26 import org.onosproject.net.newresource.ResourceConsumer;
26 import org.onosproject.net.newresource.ResourceEvent; 27 import org.onosproject.net.newresource.ResourceEvent;
27 import org.onosproject.net.newresource.ResourcePath; 28 import org.onosproject.net.newresource.ResourcePath;
...@@ -30,6 +31,7 @@ import org.onosproject.net.newresource.ResourceStoreDelegate; ...@@ -30,6 +31,7 @@ import org.onosproject.net.newresource.ResourceStoreDelegate;
30 import org.onosproject.store.AbstractStore; 31 import org.onosproject.store.AbstractStore;
31 import org.onosproject.store.serializers.KryoNamespaces; 32 import org.onosproject.store.serializers.KryoNamespaces;
32 import org.onosproject.store.service.ConsistentMap; 33 import org.onosproject.store.service.ConsistentMap;
34 +import org.onosproject.store.service.ConsistentMapException;
33 import org.onosproject.store.service.Serializer; 35 import org.onosproject.store.service.Serializer;
34 import org.onosproject.store.service.StorageService; 36 import org.onosproject.store.service.StorageService;
35 import org.onosproject.store.service.TransactionContext; 37 import org.onosproject.store.service.TransactionContext;
...@@ -68,6 +70,10 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour ...@@ -68,6 +70,10 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour
68 private static final Serializer SERIALIZER = Serializer.using( 70 private static final Serializer SERIALIZER = Serializer.using(
69 Arrays.asList(KryoNamespaces.BASIC, KryoNamespaces.API)); 71 Arrays.asList(KryoNamespaces.BASIC, KryoNamespaces.API));
70 72
73 + // TODO: We should provide centralized values for this
74 + private static final int MAX_RETRIES = 5;
75 + private static final int RETRY_DELAY = 1_000; // millis
76 +
71 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 77 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
72 protected StorageService service; 78 protected StorageService service;
73 79
...@@ -85,7 +91,8 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour ...@@ -85,7 +91,8 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour
85 .withSerializer(SERIALIZER) 91 .withSerializer(SERIALIZER)
86 .build(); 92 .build();
87 93
88 - childMap.put(ResourcePath.ROOT, ImmutableList.of()); 94 + Tools.retryable(() -> childMap.put(ResourcePath.ROOT, ImmutableList.of()),
95 + ConsistentMapException.class, MAX_RETRIES, RETRY_DELAY);
89 log.info("Started"); 96 log.info("Started");
90 } 97 }
91 98
......
...@@ -242,7 +242,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { ...@@ -242,7 +242,9 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider {
242 cfgRegistry.addListener(cfgListener); 242 cfgRegistry.addListener(cfgListener);
243 factories.forEach(cfgRegistry::registerConfigFactory); 243 factories.forEach(cfgRegistry::registerConfigFactory);
244 244
245 - SuppressionConfig cfg = cfgRegistry.getConfig(appId, SuppressionConfig.class); 245 + SuppressionConfig cfg =
246 + Tools.retryable(() -> cfgRegistry.getConfig(appId, SuppressionConfig.class),
247 + ConsistentMapException.class, MAX_RETRIES, RETRY_DELAY).get();
246 if (cfg == null) { 248 if (cfg == null) {
247 // If no configuration is found, register default. 249 // If no configuration is found, register default.
248 cfg = Tools.retryable(this::setDefaultSuppressionConfig, 250 cfg = Tools.retryable(this::setDefaultSuppressionConfig,
......