ONOS-1731 Fixed app gossip store & manager to deal with staggered app load on startup.
Change-Id: Ie88f5659646c11b906a63204f97083b6deb64adb
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 7e7ec06..4910ce4 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
@@ -85,6 +85,8 @@
public class GossipApplicationStore extends ApplicationArchive
implements ApplicationStore {
+ private static final int MAX_LOAD_RETRIES = 3;
+
private final Logger log = getLogger(getClass());
private static final MessageSubject APP_BITS_REQUEST = new MessageSubject("app-bits-request");
@@ -163,10 +165,16 @@
*/
private void loadFromDisk() {
for (String name : getApplicationNames()) {
- Application app = create(getApplicationDescription(name), false);
- if (app != null && isActive(app.id().name())) {
- activate(app.id(), false);
- // load app permissions
+ for (int i = 0; i < MAX_LOAD_RETRIES; i++) {
+ try {
+ Application app = create(getApplicationDescription(name), false);
+ if (app != null && isActive(app.id().name())) {
+ activate(app.id(), false);
+ // load app permissions
+ }
+ } catch (Exception e) {
+ log.warn("Unable to load application {} from disk; retrying", name);
+ }
}
}
}