Fix issue with CMS deployment marked twice as available when state has
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 6 Apr 2019 08:48:58 +0000 (10:48 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 6 Apr 2019 08:48:58 +0000 (10:48 +0200)
not been cleared.

org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java

index 0711be2e885674dc4a4cb9fdb05e20720e7cdcfd..30d283c580583ed090df96b2694ad093bd414b89 100644 (file)
@@ -197,7 +197,13 @@ public class CmsDeployment implements NodeDeployment {
                }
        }
 
-       private void checkReadiness() {
+       /**
+        * Checks whether the deployment is available according to expectations, and
+        * mark it as available.
+        */
+       private synchronized void checkReadiness() {
+               if (isAvailable())
+                       return;
                if (nodeAvailable && userAdminAvailable && (httpExpected ? httpAvailable : true)) {
                        String data = KernelUtils.getFrameworkProp(KernelUtils.OSGI_INSTANCE_AREA);
                        String state = KernelUtils.getFrameworkProp(KernelUtils.OSGI_CONFIGURATION_AREA);
@@ -369,10 +375,14 @@ public class CmsDeployment implements NodeDeployment {
        }
 
        @Override
-       public Long getAvailableSince() {
+       public synchronized Long getAvailableSince() {
                return availableSince;
        }
 
+       public synchronized boolean isAvailable() {
+               return availableSince != null;
+       }
+
        private class RepositoryContextStc extends ServiceTracker<RepositoryContext, RepositoryContext> {
 
                public RepositoryContextStc() {