private void waitForStartupThreadToComplete()

in src/main/java/org/apache/sling/jcr/base/AbstractSlingRepositoryManager.java [700:727]


    private void waitForStartupThreadToComplete() {
        try {
            // Oak does play well with interrupted exceptions, so avoid that at all costs
            // https://jackrabbit.apache.org/oak/docs/dos_and_donts.html
            for ( int i = 0; i < startupThreadMaxWaitCount; i++ ) {
                log.info("Waiting {} millis for {} to complete, attempt {}/{}.", startupThreadWaitMillis, startupThread.getName(), (i + 1), startupThreadMaxWaitCount);
                startupThread.join(startupThreadWaitMillis);
                if ( !startupThread.isAlive() ) {
                    log.info("{} not alive, proceeding", startupThread.getName());
                    break;
                }
            }
        } catch (InterruptedException e) {
            log.warn("Interrupted while waiting for the {} to complete. {}", startupThread.getName(), INTERRUPTED_EXCEPTION_NOTE, e);
            Thread.currentThread().interrupt();
        }
        
        if ( startupThread.isAlive() ) {
            log.warn("Proceeding even though {} is still running, behaviour is undefined.", startupThread.getName());
            if ( log.isInfoEnabled() ) {
                StringBuilder stackTrace = new StringBuilder();
                stackTrace.append("Stack trace for ").append(startupThread.getName()).append(" :\n");
                for (StackTraceElement traceElement : startupThread.getStackTrace())
                    stackTrace.append("\tat ").append(traceElement).append('\n');
                log.info(stackTrace.toString());
            }
        }
    }