You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/11/23 14:11:22 UTC
svn commit: r1715799 - in
/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl:
jobs/JobImpl.java jobs/queues/QueueJobCache.java support/ResourceHelper.java
Author: cziegeler
Date: Mon Nov 23 13:11:22 2015
New Revision: 1715799
URL: http://svn.apache.org/viewvc?rev=1715799&view=rev
Log:
SLING-5319 : When loading a job distinguish between fatale and recoverable error
Modified:
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobImpl.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/ResourceHelper.java
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobImpl.java?rev=1715799&r1=1715798&r2=1715799&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobImpl.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobImpl.java Mon Nov 23 13:11:22 2015
@@ -105,6 +105,22 @@ public class JobImpl implements Job, Com
}
/**
+ * Is the error recoverable?
+ */
+ public boolean isReadErrorRecoverable() {
+ boolean result = true;
+ if ( this.readErrorList != null ) {
+ for(final Exception e : this.readErrorList) {
+ if ( e instanceof RuntimeException ) {
+ result = false;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
* Get all properties
*/
public Map<String, Object> getProperties() {
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java?rev=1715799&r1=1715798&r2=1715799&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java Mon Nov 23 13:11:22 2015
@@ -37,6 +37,7 @@ import org.apache.sling.event.impl.jobs.
import org.apache.sling.event.impl.jobs.Utility;
import org.apache.sling.event.impl.jobs.config.JobManagerConfiguration;
import org.apache.sling.event.impl.jobs.stats.StatisticsManager;
+import org.apache.sling.event.jobs.Job.JobState;
import org.apache.sling.event.jobs.Queue;
import org.apache.sling.event.jobs.QueueConfiguration;
import org.apache.sling.event.jobs.QueueConfiguration.Type;
@@ -281,7 +282,13 @@ public class QueueJobCache {
} else {
// error reading job
scanTopic.set(true);
- logger.debug("Ignoring job {} due to read errors.", job);
+ if ( job.isReadErrorRecoverable() ) {
+ logger.debug("Ignoring job {} due to recoverable read errors.", job);
+ } else {
+ logger.debug("Failing job {} due to unrecoverable read errors.", job);
+ final JobHandler handler = new JobHandler(job, null, configuration);
+ handler.finished(JobState.ERROR, true, null);
+ }
}
return list.size() < maxPreloadLimit;
}
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/ResourceHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/ResourceHelper.java?rev=1715799&r1=1715798&r2=1715799&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/ResourceHelper.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/ResourceHelper.java Mon Nov 23 13:11:22 2015
@@ -210,16 +210,17 @@ public abstract class ResourceHelper {
if ( hasReadError == null ) {
hasReadError = new ArrayList<Exception>();
}
- final int count = hasReadError.size();
// let's find out which class might be missing
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream((InputStream)entry.getValue());
ois.readObject();
+
+ hasReadError.add(new Exception("Unable to deserialize property '" + entry.getKey() + "'"));
} catch (final ClassNotFoundException cnfe) {
hasReadError.add(new Exception("Unable to deserialize property '" + entry.getKey() + "'", cnfe));
} catch (final IOException ioe) {
- hasReadError.add(new Exception("Unable to deserialize property '" + entry.getKey() + "'", ioe));
+ hasReadError.add(new RuntimeException("Unable to deserialize property '" + entry.getKey() + "'", ioe));
} finally {
if ( ois != null ) {
try {
@@ -229,9 +230,6 @@ public abstract class ResourceHelper {
}
}
}
- if ( hasReadError.size() == count ) {
- hasReadError.add(new Exception("Unable to deserialize property '" + entry.getKey() + "'"));
- }
}
}
}