Author: [log in to unmask] Date: Tue Mar 10 15:29:29 2015 New Revision: 2391 Log: Add proper handling of ET exceptions in CompositeLoop so they are always propagated. Modified: java/trunk/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java Modified: java/trunk/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java Tue Mar 10 15:29:29 2015 @@ -15,9 +15,15 @@ import org.hps.record.enums.ProcessingStage; import org.hps.record.et.EtEventProcessor; import org.hps.record.et.EtEventSource; -import org.hps.record.et.EtEventSource.EtSourceException; import org.hps.record.evio.EvioEventProcessor; import org.hps.record.evio.EvioFileSource; +import org.jlab.coda.et.exception.EtBusyException; +import org.jlab.coda.et.exception.EtClosedException; +import org.jlab.coda.et.exception.EtDeadException; +import org.jlab.coda.et.exception.EtEmptyException; +import org.jlab.coda.et.exception.EtException; +import org.jlab.coda.et.exception.EtTimeoutException; +import org.jlab.coda.et.exception.EtWakeUpException; import org.lcsim.util.Driver; import org.lcsim.util.loop.LCIOEventSource; @@ -149,8 +155,8 @@ Throwable cause = x.getCause(); if (cause instanceof MaxRecordsException || cause instanceof EndRunException || - cause instanceof EtSourceException || - cause instanceof NoSuchRecordException) { + cause instanceof NoSuchRecordException || + isEtReadException(cause)) { // These types of exceptions are never ignored. return false; } else { @@ -160,6 +166,21 @@ } } return false; + } + + /** + * True if the Throwable is a type that can be thrown by the ET + * system when it is attempting to read events from the server. + * The <code>IOException</code> type is ignored but can actually + * be thrown. + * @param e The Exception. + * @return True if the object can be thrown by ET event reading. + */ + private static boolean isEtReadException(Throwable e) { + return e instanceof EtException || e instanceof EtDeadException + || e instanceof EtClosedException || e instanceof EtEmptyException + || e instanceof EtBusyException || e instanceof EtTimeoutException + || e instanceof EtWakeUpException; } /**