Author: cziegeler
Date: Wed Jul 17 08:36:33 2013
New Revision: 1504048

URL: http://svn.apache.org/r1504048
Log:
SLING-2971 :  BackgroundLoader thread dies for invalid paths 

Modified:
    
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/BackgroundLoader.java

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/BackgroundLoader.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/BackgroundLoader.java?rev=1504048&r1=1504047&r2=1504048&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/BackgroundLoader.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/BackgroundLoader.java
 Wed Jul 17 08:36:33 2013
@@ -220,16 +220,21 @@ public class BackgroundLoader implements
                         try {
                             resolver = 
this.resourceResolverFactory.getAdministrativeResourceResolver(null);
                             final Resource resource = 
resolver.getResource(path);
-                            if ( resource != null && 
ResourceHelper.RESOURCE_TYPE_JOB.equals(resource.getResourceType()) ) {
-                                this.logger.debug("Reading local job from {}", 
path);
-                                final JobImpl job = 
this.jobManager.readJob(resource);
-                                if ( job != null ) {
-                                    if ( job.hasReadErrors() ) {
-                                        synchronized ( this.unloadedJobs ) {
-                                            this.unloadedJobs.add(path);
+                            if ( resource == null ) {
+                                // this should actually never happen, just a 
sanity check (see SLING-2971)
+                                logger.warn("No job resource found for path 
{}. Potential job will not be processed.", path);
+                            } else {
+                                if 
(ResourceHelper.RESOURCE_TYPE_JOB.equals(resource.getResourceType()) ) {
+                                    this.logger.debug("Reading local job from 
{}", path);
+                                    final JobImpl job = 
this.jobManager.readJob(resource);
+                                    if ( job != null ) {
+                                        if ( job.hasReadErrors() ) {
+                                            synchronized ( this.unloadedJobs ) 
{
+                                                this.unloadedJobs.add(path);
+                                            }
+                                        } else {
+                                            this.jobManager.process(job);
                                         }
-                                    } else {
-                                        this.jobManager.process(job);
                                     }
                                 }
                             }


Reply via email to