X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Finternal%2FRepositoryContextsFactory.java;h=e05a0023e74acff795c7db5ff34e9d02e49e66bd;hb=633a8acd189cc22f06944d278879601189be1bc8;hp=2b9ad0043f1b5731c42d11b498a4859167971564;hpb=9bf9c0c17d8131c46dea9ee3ebad394720f3f344;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/RepositoryContextsFactory.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/RepositoryContextsFactory.java index 2b9ad0043..e05a0023e 100644 --- a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/RepositoryContextsFactory.java +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/RepositoryContextsFactory.java @@ -38,10 +38,14 @@ public class RepositoryContextsFactory implements ManagedServiceFactory { for (String pid : repositories.keySet()) { try { RepositoryContext repositoryContext = repositories.get(pid); - repositoryContext.getRepository().shutdown(); - if (log.isDebugEnabled()) - log.debug("Shut down repository " + pid - + (pidToCn.containsKey(pid) ? " (" + pidToCn.get(pid) + ")" : "")); + // Must start in another thread otherwise shutdown is interrupted + // TODO use an executor? + new Thread(() -> { + repositoryContext.getRepository().shutdown(); + if (log.isDebugEnabled()) + log.debug("Shut down repository " + pid + + (pidToCn.containsKey(pid) ? " (" + pidToCn.get(pid) + ")" : "")); + }, "Shutdown JCR repository " + pid).start(); } catch (Exception e) { log.error("Error when shutting down Jackrabbit repository " + pid, e); } @@ -69,7 +73,7 @@ public class RepositoryContextsFactory implements ManagedServiceFactory { RepositoryContext repositoryContext = repositories.remove(otherPid); repositories.put(pid, repositoryContext); if (log.isDebugEnabled()) - log.debug("Ignore update of Jackrabbit repository " + cn); + log.debug("Ignoring update of Jackrabbit repository " + cn); // FIXME perform a proper update (also of the OSGi service) return; }