Delay loading startup applications.

We need to ensure ApplicationService is fully activated before we try
to load any applications that may depend on it.

Change-Id: I77bcf2534cc43056facb5dca5b6947ab52e61dcc
diff --git a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
index a762659..50063b2 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
@@ -62,6 +62,7 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
 import static com.google.common.collect.Multimaps.newSetMultimap;
@@ -94,6 +95,8 @@
 
     private static final int FETCH_TIMEOUT_MS = 10_000;
 
+    private static final int APP_LOAD_DELAY_MS = 500;
+
     public enum InternalState {
         INSTALLED, ACTIVATED, DEACTIVATED
     }
@@ -230,7 +233,7 @@
     @Override
     public void setDelegate(ApplicationStoreDelegate delegate) {
         super.setDelegate(delegate);
-        loadFromDisk();
+        executor.schedule(() -> loadFromDisk(), APP_LOAD_DELAY_MS, TimeUnit.MILLISECONDS);
     }
 
     @Override