protected final void stop()

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;
    }