Uploaded image for project: 'FUSE Mediation Router'
  1. FUSE Mediation Router
  2. MR-924

CamelContext in Blueprint does not shut down cleanly with an errorHandler defined

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Major Major
    • 2.14.0.redhat-62-xx
    • None
    • None
    • None

      When a Camel route defined in Blueprint XML has an error handler defined, and the error handler is a bean held in the registry, then when the Camel route is shut down the error cannot be invoked, and an error message is shown.

      A route that will show this problem is as follows:

      <camel:camelContext  errorHandlerRef="myErrorHandler"
        streamCache="true" trace="false">
      ...
              <camel:errorHandler id="myErrorHandler" type="DefaultErrorHandler">
                  <camel:redeliveryPolicy maximumRedeliveries="3" redeliveryDelay="10000" retryAttemptedLogLevel="WARN" />
              </camel:errorHandler>
      

      where myErrorHandler is a registered bean.

      The exception shown is:

      2014-10-02 16:47:25,344 | WARN  | loy-integrations | faultManagementLifecycleStrategy | 164 - org.apache.camel.camel-core - 2.12.0.redhat-610387 | Could not unregister error handler: org.apache.camel.management.mbean.ManagedErrorHandler@1751967 as ErrorHandler MBean.
      org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: myErrorHandler of type: org.apache.camel.builder.ErrorHandlerBuilder
              at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:151)
              at org.apache.camel.impl.DefaultRouteContext.mandatoryLookup(DefaultRouteContext.java:144)
              at org.apache.camel.builder.ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(ErrorHandlerBuilderRef.java:125)
              at org.apache.camel.management.DefaultManagementNamingStrategy.getObjectNameForErrorHandler(DefaultManagementNamingStrategy.java:154)
              at org.apache.camel.management.ManagedManagementStrategy.getManagedObjectName(ManagedManagementStrategy.java:104)
              at org.apache.camel.management.ManagedManagementStrategy.unmanageObject(ManagedManagementStrategy.java:143)
              at org.apache.camel.management.DefaultManagementLifecycleStrategy.unmanageObject(DefaultManagementLifecycleStrategy.java:823)
              at org.apache.camel.management.DefaultManagementLifecycleStrategy.onErrorHandlerRemove(DefaultManagementLifecycleStrategy.java:622)
      

      It seems that the CamelContext is shut down too late, after the bean registry has already been shut down.

            ggrzybek Grzegorz Grzybek
            rhn-support-kboone Kevin Boone
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: