in src/main/java/org/apache/sling/jcr/base/AbstractSlingRepositoryManager.java [631:698]
protected final void stop() {
log.info("Stop requested");
if ( startupThread != null && startupThread != Thread.currentThread() ) {
waitForStartupThreadToComplete();
startupThread = null;
}
if (this.mountTracker != null) {
this.mountTracker.close();
this.mountTracker = null;
}
// ensure the repository is really disposed off
if (repository != null || isRepositoryServiceRegistered()) {
log.info("stop: Repository still running, forcing shutdown");
// make sure we are not concurrently unregistering the repository
synchronized (repoInitLock) {
try {
if (isRepositoryServiceRegistered()) {
try {
log.debug("stop: Unregistering SlingRepository service, registration={}", repositoryService);
unregisterService(repositoryService);
} catch (Throwable t) {
log.info("stop: Uncaught problem unregistering the repository service", t);
}
repositoryService = null;
}
if (repository != null) {
Repository oldRepo = repository;
repository = null;
// stop loader
if (this.loader != null) {
this.loader.dispose();
this.loader = null;
}
// destroy repository
this.destroy(this.masterSlingRepository);
try {
disposeRepository(oldRepo instanceof ProxyRepository ? ((ProxyRepository<?>) oldRepo).jcr : oldRepo);
} catch (Throwable t) {
log.info("stop: Uncaught problem disposing the repository", t);
}
}
} catch (Throwable t) {
log.warn("stop: Unexpected problem stopping repository", t);
}
}
}
if(repoInitializerTracker != null) {
repoInitializerTracker.close();
repoInitializerTracker = null;
}
if (allowListTracker != null) {
allowListTracker.close();
allowListTracker = null;
}
this.repositoryService = null;
this.repository = null;
this.defaultWorkspace = null;
this.bundleContext = null;
}