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