This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new cddff2d0cec CAMEL-19748: fixed catching Throwables in camel-base-engine (#11116) cddff2d0cec is described below commit cddff2d0cecb860f77da2f5b705f0034d256b9cf Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com> AuthorDate: Thu Aug 17 07:15:32 2023 +0200 CAMEL-19748: fixed catching Throwables in camel-base-engine (#11116) --- .../main/java/org/apache/camel/impl/debugger/DefaultDebugger.java | 6 +++--- .../src/main/java/org/apache/camel/impl/engine/AdviceIterator.java | 2 +- .../org/apache/camel/impl/engine/BaseExecutorServiceManager.java | 2 +- .../java/org/apache/camel/impl/engine/CamelInternalProcessor.java | 4 ++-- .../java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java | 2 +- .../apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java | 2 +- .../java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java | 2 +- .../java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java | 4 ++-- .../java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java | 4 ++-- .../main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java | 6 +++--- .../main/java/org/apache/camel/impl/engine/DurationRoutePolicy.java | 2 +- .../org/apache/camel/impl/engine/SharedCamelInternalProcessor.java | 6 +++--- .../java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java index 9c01912479a..58167174026 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java @@ -283,7 +283,7 @@ public class DefaultDebugger extends ServiceSupport implements Debugger, CamelCo protected void onBeforeProcess(Exchange exchange, Processor processor, NamedNode definition, Breakpoint breakpoint) { try { breakpoint.beforeProcess(exchange, processor, definition); - } catch (Throwable e) { + } catch (Exception e) { // ignore } } @@ -292,7 +292,7 @@ public class DefaultDebugger extends ServiceSupport implements Debugger, CamelCo Exchange exchange, Processor processor, NamedNode definition, long timeTaken, Breakpoint breakpoint) { try { breakpoint.afterProcess(exchange, processor, definition, timeTaken); - } catch (Throwable e) { + } catch (Exception e) { // ignore } } @@ -306,7 +306,7 @@ public class DefaultDebugger extends ServiceSupport implements Debugger, CamelCo try { breakpoint.onEvent(exchange, event, definition); - } catch (Throwable e) { + } catch (Exception e) { // ignore } } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AdviceIterator.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AdviceIterator.java index 4ec157d9af4..1d59763bd0d 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AdviceIterator.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AdviceIterator.java @@ -36,7 +36,7 @@ final class AdviceIterator { } try { task.after(exchange, state); - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); // allow all advices to complete even if there was an exception } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java index ed0a926e0a9..ea7f8c8a482 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java @@ -474,7 +474,7 @@ public class BaseExecutorServiceManager extends ServiceSupport implements Execut if (warned) { forced.add(executorService); } - } catch (Throwable e) { + } catch (Exception e) { // only log if something goes wrong as we want to shutdown them all LOG.warn("Error occurred during shutdown of ExecutorService: {}. This exception will be ignored.", executorService, e); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java index 79229d7fbd6..af24a796b0f 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java @@ -327,7 +327,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In if (task.hasState()) { states[j++] = state; } - } catch (Throwable e) { + } catch (Exception e) { // error in before so break out exchange.setException(e); try { @@ -356,7 +356,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In // ---------------------------------------------------------- // CAMEL END USER - DEBUG ME HERE +++ END +++ // ---------------------------------------------------------- - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); } finally { // processing is done diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java index 83b007ea8de..18ac9934660 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java @@ -376,7 +376,7 @@ public class CamelPostProcessorHelper implements CamelContextAware { // attempt to create a new instance try { bean = ecc.getInjector().newInstance(type); - } catch (Throwable e) { + } catch (Exception e) { // ignore return null; } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java index c62abeb7551..719cb881325 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java @@ -236,7 +236,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements for (AwaitThread entry : threads) { try { interrupt(entry.getExchange()); - } catch (Throwable e) { + } catch (Exception e) { LOG.warn("Error while interrupting thread: {}. This exception is ignored.", entry.getBlockedThread().getName(), e); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java index fd0013ca503..cebf926661a 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java @@ -224,7 +224,7 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT // done the unit of work exchange.getUnitOfWork().done(exchange); } - } catch (Throwable e) { + } catch (Exception e) { LOG.warn("Exception occurred during done UnitOfWork for Exchange: {}. This exception will be ignored.", exchange, e); } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java index 35a05842cf6..b0f2806917b 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java @@ -194,7 +194,7 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE LOG.trace("Worker #{} running: {}", number, polled); } polled.run(); - } catch (Throwable t) { + } catch (Exception t) { LOG.warn("Error executing reactive work due to {}. This exception is ignored.", t.getMessage(), t); } @@ -214,7 +214,7 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE LOG.trace("Running: {}", polled); } polled.run(); - } catch (Throwable t) { + } catch (Exception t) { // should not happen LOG.warn("Error executing reactive work due to {}. This exception is ignored.", t.getMessage(), t); } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java index beeb97e159c..19b24fa0fed 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java @@ -431,7 +431,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS // allow us to do custom work before delegating to service helper try { ServiceHelper.stopService(consumer); - } catch (Throwable e) { + } catch (Exception e) { LOG.warn("Error occurred while shutting down route: {}. This exception will be ignored.", routeId, e); // fire event EventHelper.notifyServiceStopFailure(consumer.getEndpoint().getCamelContext(), consumer, e); @@ -452,7 +452,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS // allow us to do custom work before delegating to service helper try { ServiceHelper.suspendService(consumer); - } catch (Throwable e) { + } catch (Exception e) { LOG.warn("Error occurred while suspending route: {}. This exception will be ignored.", routeId, e); // fire event EventHelper.notifyServiceStopFailure(consumer.getEndpoint().getCamelContext(), consumer, e); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java index 7e237e3d085..dbbf1af44ad 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java @@ -147,7 +147,7 @@ public class DefaultUnitOfWork implements UnitOfWork { if (context.getCamelContextExtension().isEventNotificationApplicable()) { try { EventHelper.notifyExchangeCreated(context, exchange); - } catch (Throwable e) { + } catch (Exception e) { // must catch exceptions to ensure the exchange is not failing due to notification event failed log.warn("Exception occurred during event notification. This exception will be ignored.", e); } @@ -261,7 +261,7 @@ public class DefaultUnitOfWork implements UnitOfWork { } else { EventHelper.notifyExchangeDone(exchange.getContext(), exchange); } - } catch (Throwable e) { + } catch (Exception e) { // must catch exceptions to ensure synchronizations is also invoked log.warn("Exception occurred during event notification. This exception will be ignored.", e); } @@ -277,7 +277,7 @@ public class DefaultUnitOfWork implements UnitOfWork { if (pooled.isAutoRelease()) { ((PooledExchange) exchange).done(); } - } catch (Throwable e) { + } catch (Exception e) { // must catch exceptions to ensure synchronizations is also invoked log.warn("Exception occurred during exchange done. This exception will be ignored.", e); } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DurationRoutePolicy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DurationRoutePolicy.java index fe5d8e9d2e6..e658eaf3e18 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DurationRoutePolicy.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DurationRoutePolicy.java @@ -189,7 +189,7 @@ public class DurationRoutePolicy extends org.apache.camel.support.RoutePolicySup LOG.info("Suspending all routes {}", tail); camelContext.suspend(); } - } catch (Throwable e) { + } catch (Exception e) { LOG.warn("Error performing action: {}", action, e); } }; diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java index d5ce963bca5..f8b3de187e9 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java @@ -159,7 +159,7 @@ public class SharedCamelInternalProcessor implements SharedInternalProcessor { if (task.hasState()) { states[j++] = state; } - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); originalCallback.done(true); return true; @@ -185,7 +185,7 @@ public class SharedCamelInternalProcessor implements SharedInternalProcessor { // ---------------------------------------------------------- try { processor.process(exchange); - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); } // ---------------------------------------------------------- @@ -254,7 +254,7 @@ public class SharedCamelInternalProcessor implements SharedInternalProcessor { if (resultProcessor != null) { try { resultProcessor.process(exchange); - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); } } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java index 0e8614fc2d5..bf186a68fcd 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java @@ -80,7 +80,7 @@ public final class SubscribeMethodProcessor extends AsyncProcessorSupport implem return entry.getKey().process(exchange, callback); } } - } catch (Throwable e) { + } catch (Exception e) { exchange.setException(e); } callback.done(true);