Uploaded image for project: 'BatchEE'
  1. BatchEE
  2. BATCHEE-56

ChunkListener.onError() should not be called in case of exceptions outside of chunks

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 0.1-incubating, 0.2-incubating
    • 0.3-incubating
    • jbatch-core
    • None

    Description

      As we have some integration-tests running on different application-servers, we discovered some differences in the behavior of the jbatch-implementations concerning listeners in case of exceptions:

      If an exception occurs inside the ItemReader/ItemWriter open() or close() methods, then in case of JBeret, the ChunkListener.onError() method is not called, while the JBatch RI included in GlassFish 4 as well as Apache BatchEE do call the method.

      This issue has already been discussed in the JBeret issue-tracker:

      https://github.com/jberet/jsr352/issues/25

      Cheng Fang summarizes it as follows:
      "A chunk-type step consists of multiple chunks, and ChunkListener is for these smaller chunks, not for the entire step. When ItemReader.open() is called at the beginning of the step, we haven't come to any chunk yet, why should the ChunkListener be called?"

      I agree with him, that according to the spec, the ChunkListener should not be called in case of exceptions inside the open() and close() methods. So I think the BatchEE implementation should be adjusted here. Please refer to the JBeret issue linked above for more details.

      Related to this issue, I have opened a discussion on the jbatch public mailing list for enhancing the error-handling with listeners:

      https://java.net/projects/jbatch/lists/public/archive/2014-12/message/3

      Attachments

        Activity

          People

            romain.manni-bucau Romain Manni-Bucau
            mariok Mario Ködding
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: