Thomas Vachuska

ONOS-1418 Fix for intermittent issue with app store.

Change-Id: I94cb818550825984ec5e70a82a772a6f3bae5b0d
...@@ -346,7 +346,7 @@ public class ApplicationArchive ...@@ -346,7 +346,7 @@ public class ApplicationArchive
346 * @param appName application name 346 * @param appName application name
347 * @return true if the app descriptor was updated 347 * @return true if the app descriptor was updated
348 */ 348 */
349 - private boolean updateTime(String appName) { 349 + protected boolean updateTime(String appName) {
350 return appFile(appName, APP_XML).setLastModified(System.currentTimeMillis()); 350 return appFile(appName, APP_XML).setLastModified(System.currentTimeMillis());
351 } 351 }
352 352
......
...@@ -172,9 +172,9 @@ public class GossipApplicationStore extends ApplicationArchive ...@@ -172,9 +172,9 @@ public class GossipApplicationStore extends ApplicationArchive
172 */ 172 */
173 private void loadFromDisk() { 173 private void loadFromDisk() {
174 for (String name : getApplicationNames()) { 174 for (String name : getApplicationNames()) {
175 - Application app = create(getApplicationDescription(name)); 175 + Application app = create(getApplicationDescription(name), false);
176 if (app != null && isActive(app.id().name())) { 176 if (app != null && isActive(app.id().name())) {
177 - activate(app.id()); 177 + activate(app.id(), false);
178 // load app permissions 178 // load app permissions
179 } 179 }
180 } 180 }
...@@ -224,11 +224,14 @@ public class GossipApplicationStore extends ApplicationArchive ...@@ -224,11 +224,14 @@ public class GossipApplicationStore extends ApplicationArchive
224 @Override 224 @Override
225 public Application create(InputStream appDescStream) { 225 public Application create(InputStream appDescStream) {
226 ApplicationDescription appDesc = saveApplication(appDescStream); 226 ApplicationDescription appDesc = saveApplication(appDescStream);
227 - return create(appDesc); 227 + return create(appDesc, true);
228 } 228 }
229 229
230 - private Application create(ApplicationDescription appDesc) { 230 + private Application create(ApplicationDescription appDesc, boolean updateTime) {
231 Application app = registerApp(appDesc); 231 Application app = registerApp(appDesc);
232 + if (updateTime) {
233 + updateTime(app.id().name());
234 + }
232 apps.put(app.id(), app); 235 apps.put(app.id(), app);
233 states.put(app, INSTALLED); 236 states.put(app, INSTALLED);
234 return app; 237 return app;
...@@ -246,8 +249,15 @@ public class GossipApplicationStore extends ApplicationArchive ...@@ -246,8 +249,15 @@ public class GossipApplicationStore extends ApplicationArchive
246 249
247 @Override 250 @Override
248 public void activate(ApplicationId appId) { 251 public void activate(ApplicationId appId) {
252 + activate(appId, true);
253 + }
254 +
255 + private void activate(ApplicationId appId, boolean updateTime) {
249 Application app = apps.get(appId); 256 Application app = apps.get(appId);
250 if (app != null) { 257 if (app != null) {
258 + if (updateTime) {
259 + updateTime(appId.name());
260 + }
251 states.put(app, ACTIVATED); 261 states.put(app, ACTIVATED);
252 } 262 }
253 } 263 }
...@@ -256,6 +266,7 @@ public class GossipApplicationStore extends ApplicationArchive ...@@ -256,6 +266,7 @@ public class GossipApplicationStore extends ApplicationArchive
256 public void deactivate(ApplicationId appId) { 266 public void deactivate(ApplicationId appId) {
257 Application app = apps.get(appId); 267 Application app = apps.get(appId);
258 if (app != null) { 268 if (app != null) {
269 + updateTime(appId.name());
259 states.put(app, DEACTIVATED); 270 states.put(app, DEACTIVATED);
260 } 271 }
261 } 272 }
......