private void reassignJobsFromStoppedInstances()

in src/main/java/org/apache/sling/event/impl/jobs/tasks/CheckTopologyTask.java [72:99]


    private void reassignJobsFromStoppedInstances() {
        if ( caps.isLeader() && caps.isActive() ) {
            this.logger.debug("Checking for stopped instances...");
            final ResourceResolver resolver = this.configuration.createResourceResolver();
            if ( resolver != null ) {
                try {
                    final Resource jobsRoot = resolver.getResource(this.configuration.getAssginedJobsPath());
                    this.logger.debug("Got jobs root {}", jobsRoot);

                    // this resource should exist, but we check anyway
                    if ( jobsRoot != null ) {
                        final Iterator<Resource> instanceIter = jobsRoot.listChildren();
                        while ( caps.isActive() && instanceIter.hasNext() ) {
                            final Resource instanceResource = instanceIter.next();

                            final String instanceId = instanceResource.getName();
                            if ( !caps.isActive(instanceId) ) {
                                logger.debug("Found stopped instance {}", instanceId);
                                assignJobs(instanceResource, true);
                            }
                        }
                    }
                } finally {
                    resolver.close();
                }
            }
        }
    }