Start a new thread if you start a new discussion. This thread was about a failed unit test from camel-core on Windows.
On Mon, Dec 5, 2011 at 3:44 PM, bvahdat <babak.vah...@swissonline.ch> wrote: > Hi > > The fix you provided indeed did mitigated the issue I had on Windows > (TokenPairPredicateTest now passes as well), however my viewpoint as I > shared in [1] is still pending. Effectively what I would expect to have in > LoggingExceptionHandler is the code below, which *per default* rethrows the > exception after it logs it. However making that change in my workspace (of > course) now causes side effects by other unit-tests to fail. So I assume to > fix LoggingExceptionHandler *to not just swallow* the thrown exceptions will > be not that trivial! > > Just as an example imagine a simple billing-system having a single camel > context with two routes in it. One route produces the monthly bills and dump > them into a xml-file (using the file producer), the other one reads that > xml-file (through the file consumer), splits the bill-entries and send the > bills to the consumers by mail. Now with that exception swalling behaviour > of LoggingExceptionHandler in place, if generating/renaming/moving of the > xml-file by the first route fails in between, for example just because of > the possible: > > - disk out of space issue > - maximum unix quota has been already reached issue > > Then the second route would wait & wait & wait forever and there will be not > even an invocation of possible onException clause (if any) at all. So the > operation guys will not realize any problem (not even through JMX or > whatnot)...So happy free-service for the customers... > > How do you see this? Am I missing something? > > [1] > http://camel.465427.n5.nabble.com/Riding-on-org-apache-camel-language-TokenPairPredicateTest-td5041981.html > > Babak > > public class LoggingExceptionHandler implements ExceptionHandler { > private final CamelLogger logger; > private final boolean rethrowException; > > public LoggingExceptionHandler(Class<?> ownerType) { > this(new CamelLogger(LoggerFactory.getLogger(ownerType)), true); > } > > public LoggingExceptionHandler(Class<?> ownerType, LoggingLevel level) { > this(new CamelLogger(LoggerFactory.getLogger(ownerType), level), > true); > } > > public LoggingExceptionHandler(Class<?> ownerType, boolean > rethrowException) { > this(new CamelLogger(LoggerFactory.getLogger(ownerType), > LoggingLevel.ERROR), rethrowException); > } > > public LoggingExceptionHandler(Class<?> ownerType, LoggingLevel level, > boolean rethrowException) { > this(new CamelLogger(LoggerFactory.getLogger(ownerType), level), > rethrowException); > } > > public LoggingExceptionHandler(CamelLogger logger, boolean > rethrowException) { > this.logger = logger; > this.rethrowException = rethrowException; > } > > public void handleException(Throwable exception) { > handleException(null, null, exception); > } > > public void handleException(String message, Throwable exception) { > handleException(message, null, exception); > } > > public void handleException(String message, Exchange exchange, Throwable > exception) { > try { > String msg = > CamelExchangeException.createExceptionMessage(message, exchange, exception); > if (isCausedByRollbackExchangeException(exception)) { > // do not log stacktrace for intended rollbacks > logger.log(msg); > } else { > logger.log(msg, exception); > } > } catch (Throwable e) { > // the logging exception handler must not cause new exceptions > to occur > } > > // rethrow the exception (wrapped by RuntimeCamelException) if we're > asked to do so > if (rethrowException) { > throw ObjectHelper.wrapRuntimeCamelException(exception); > } > } > > protected boolean isCausedByRollbackExchangeException(Throwable > exception) { > if (exception instanceof RollbackExchangeException) { > return true; > } else if (exception.getCause() != null) { > // recursive children > return > isCausedByRollbackExchangeException(exception.getCause()); > } > > return false; > } > } > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Riding-on-org-apache-camel-language-TokenPairPredicateTest-tp5041981p5049061.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/