Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-7171

SY Camel component's 'onException()' block no longer reachable

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • jboss-fuse-6.3
    • Camel, SwitchYard
    • None
    • % %
    • Hide

      A replicator application is enclosed. To run it:

      • Edit switchyard.xml so it used an input and output directory that are valid.
      • Build and deploy the application to Fuse 6.3.
      • Drop a file in the input directory. So long as the file does not contain the text 'blowup', an output file should appear in the output directory. (This is the 'good behavior' scenario.)
      • Edit the input file so it includes the text 'blowup'. Now drop the file, we should see error handling that puts text from the onException() block in the log. The onException() block is working! (This is the 'desired exception handling' scenario.)
      • Edit the input file so it no longer includes 'blowup'. Deploy the application, then delete the output directory so output will fail. Drop the input file, note that we do not see the 'onException()' text. The onException() block is not executing! (This is the 'undesirably different behavior' scenario.)

      Running the same application under Fuse 6.2.1 shows onException() works for both scenarios.

      Show
      A replicator application is enclosed. To run it: Edit switchyard.xml so it used an input and output directory that are valid. Build and deploy the application to Fuse 6.3. Drop a file in the input directory. So long as the file does not contain the text 'blowup', an output file should appear in the output directory. (This is the 'good behavior' scenario.) Edit the input file so it includes the text 'blowup'. Now drop the file, we should see error handling that puts text from the onException() block in the log. The onException() block is working! (This is the 'desired exception handling' scenario.) Edit the input file so it no longer includes 'blowup'. Deploy the application, then delete the output directory so output will fail. Drop the input file, note that we do not see the 'onException()' text. The onException() block is not executing! (This is the 'undesirably different behavior' scenario.) Running the same application under Fuse 6.2.1 shows onException() works for both scenarios.

      In prior releases (i.e. Fuse 6.2.1) an exception in a SwitchYard application would correctly reach an 'onException()' block defined in a Camel route used by the SY Camel component. With Fuse 6.3, this block is no longer reached.

      This is problematic for customers that have applications that depend on the previous behavior.

      It seems that onException() works well when org.apache.camel.processor.DefaultErrorHandler is in the handling chain. But some application errors take a different path! In our lab scenario, org.switchyard.bus.camel.DefaultErrorListener manages behavior and we do not reach our onException() block.

              toigaras@redhat.com tomohisa igarashi
              rhn-support-rick Rick Wagner
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: