From: Mathieu Baudier Date: Sat, 6 Apr 2019 08:48:58 +0000 (+0200) Subject: Fix issue with CMS deployment marked twice as available when state has X-Git-Tag: argeo-commons-2.1.77~16 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=25fec33b9bd7f8dd785a9c4bc6e3c33e39a542e6;p=lgpl%2Fargeo-commons.git Fix issue with CMS deployment marked twice as available when state has not been cleared. --- diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java index 0711be2e8..30d283c58 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java @@ -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 { public RepositoryContextStc() {