Fixed a defect where remotely-induced feature install was trying to stomp over l…
…ocally -induced feature install. Change-Id: I1cb2c2dd3da03a34b80b1db312056b44cc9c1f9f
Showing
1 changed file
with
7 additions
and
4 deletions
| ... | @@ -189,19 +189,22 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -189,19 +189,22 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
| 189 | } | 189 | } |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | - private void installAppArtifacts(Application app) throws Exception { | 192 | + // The following methods are fully synchronized to guard against remote vs. |
| 193 | + // locally induced feature service interactions. | ||
| 194 | + | ||
| 195 | + private synchronized void installAppArtifacts(Application app) throws Exception { | ||
| 193 | if (app.featuresRepo().isPresent()) { | 196 | if (app.featuresRepo().isPresent()) { |
| 194 | featuresService.addRepository(app.featuresRepo().get()); | 197 | featuresService.addRepository(app.featuresRepo().get()); |
| 195 | } | 198 | } |
| 196 | } | 199 | } |
| 197 | 200 | ||
| 198 | - private void uninstallAppArtifacts(Application app) throws Exception { | 201 | + private synchronized void uninstallAppArtifacts(Application app) throws Exception { |
| 199 | if (app.featuresRepo().isPresent()) { | 202 | if (app.featuresRepo().isPresent()) { |
| 200 | featuresService.removeRepository(app.featuresRepo().get()); | 203 | featuresService.removeRepository(app.featuresRepo().get()); |
| 201 | } | 204 | } |
| 202 | } | 205 | } |
| 203 | 206 | ||
| 204 | - private void installAppFeatures(Application app) throws Exception { | 207 | + private synchronized void installAppFeatures(Application app) throws Exception { |
| 205 | for (String name : app.features()) { | 208 | for (String name : app.features()) { |
| 206 | Feature feature = featuresService.getFeature(name); | 209 | Feature feature = featuresService.getFeature(name); |
| 207 | if (!featuresService.isInstalled(feature)) { | 210 | if (!featuresService.isInstalled(feature)) { |
| ... | @@ -210,7 +213,7 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -210,7 +213,7 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
| 210 | } | 213 | } |
| 211 | } | 214 | } |
| 212 | 215 | ||
| 213 | - private void uninstallAppFeatures(Application app) throws Exception { | 216 | + private synchronized void uninstallAppFeatures(Application app) throws Exception { |
| 214 | for (String name : app.features()) { | 217 | for (String name : app.features()) { |
| 215 | Feature feature = featuresService.getFeature(name); | 218 | Feature feature = featuresService.getFeature(name); |
| 216 | if (featuresService.isInstalled(feature)) { | 219 | if (featuresService.isInstalled(feature)) { | ... | ... |
-
Please register or login to post a comment