in src/main/java/org/apache/sling/event/dea/impl/DistributedEventReceiver.java [305:340]
private void cleanUpObsoleteInstances() {
final Set<String> slingIds = this.instances;
if ( slingIds != null ) {
this.instances = null;
this.logger.debug("Checking for old instance trees for distributed events.");
ResourceResolver resolver = null;
try {
resolver = this.resourceResolverFactory.getServiceResourceResolver(null);
final Resource baseResource = resolver.getResource(this.rootPath);
// sanity check - should never be null
if ( baseResource != null ) {
final ResourceHelper.BatchResourceRemover brr = ResourceHelper.getBatchResourceRemover(50);
final Iterator<Resource> iter = baseResource.listChildren();
while ( iter.hasNext() ) {
final Resource rootResource = iter.next();
if ( !slingIds.contains(rootResource.getName()) ) {
brr.delete(rootResource);
}
}
// final commit for outstanding deletes
resolver.commit();
}
} catch (final PersistenceException pe) {
// in the case of an error, we just log this as a warning
this.logger.warn("Exception during job resource tree cleanup.", pe);
} catch (final LoginException ignore) {
this.ignoreException(ignore);
} finally {
if ( resolver != null ) {
resolver.close();
}
}
}
}