ONOS-3599 Fixed exceptions during link provider activation.

Change-Id: I423b24dc27c1d53975d7ced933d803dda052a421
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
index 668d59c..ce2826c 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
@@ -45,6 +45,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.Ethernet;
+import org.onlab.util.Tools;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.core.ApplicationId;
@@ -77,6 +78,7 @@
 import org.onosproject.net.packet.PacketService;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
+import org.onosproject.store.service.ConsistentMapException;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 
@@ -99,6 +101,9 @@
     // When a Device/Port has this annotation, do not send out LLDP/BDDP
     public static final String NO_LLDP = "no-lldp";
 
+    private static final int MAX_RETRIES = 5;
+    private static final int RETRY_DELAY = 1_000; // millis
+
     private final Logger log = getLogger(getClass());
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -227,10 +232,9 @@
         SuppressionConfig cfg = cfgRegistry.getConfig(appId, SuppressionConfig.class);
         if (cfg == null) {
             // If no configuration is found, register default.
-            cfg = cfgRegistry.addConfig(appId, SuppressionConfig.class);
-            cfg.deviceTypes(DEFAULT_RULES.getSuppressedDeviceType())
-               .annotation(DEFAULT_RULES.getSuppressedAnnotation())
-               .apply();
+            cfg = Tools.retryable(this::setDefaultSuppressionConfig,
+                                  ConsistentMapException.class,
+                                  MAX_RETRIES, RETRY_DELAY).get();
         }
         cfgListener.reconfigureSuppressionRules(cfg);
 
@@ -238,6 +242,14 @@
         log.info("Started");
     }
 
+    private SuppressionConfig setDefaultSuppressionConfig() {
+        SuppressionConfig cfg = cfgRegistry.addConfig(appId, SuppressionConfig.class);
+        cfg.deviceTypes(DEFAULT_RULES.getSuppressedDeviceType())
+           .annotation(DEFAULT_RULES.getSuppressedAnnotation())
+           .apply();
+        return cfg;
+    }
+
     @Deactivate
     public void deactivate() {
         cfgRegistry.removeListener(cfgListener);