in src/main/java/org/apache/sling/auth/core/impl/AuthenticationRequirementsManager.java [253:290]
private void processQueue() {
ResourceResolver resolver = null;
ResourceMapper mapper = null;
try {
while (this.backgroundJobRunning.get()) {
Map.Entry<Long, Action> entry = null;
synchronized (this.processingQueue) {
final Iterator<Map.Entry<Long, Action>> iter =
this.processingQueue.entrySet().iterator();
if (iter.hasNext()) {
entry = iter.next();
iter.remove();
}
}
if (entry == null) {
synchronized (this.processingQueue) {
this.backgroundJobRunning.compareAndSet(true, !this.processingQueue.isEmpty());
}
} else {
logger.debug("Processing action for service {} : {}", entry.getKey(), entry.getValue());
if (entry.getValue().type != ActionType.REMOVED && mapper == null) {
try {
resolver = this.resolverFactory.getServiceResourceResolver(null);
mapper = resolver.adaptTo(ResourceMapper.class);
} catch (final org.apache.sling.api.resource.LoginException le) {
// ignore
}
}
process(mapper, entry.getKey(), entry.getValue());
}
}
} finally {
if (resolver != null) {
resolver.close();
}
}
}