Uploaded image for project: 'Samza'
  1. Samza
  2. SAMZA-1077

SamzaContainer should catch all Throwables instead of only exceptions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.12.0
    • None
    • None

    Description

      Here's the snippet from the startup sequence of the SamzaContainer.

      SamzaContainer.scala
            startProducers
            startTask
            startConsumers
            startSecurityManger
      
            info("Entering run loop.")
            addShutdownHook
            runLoop.run
          } catch {
            case e: Exception =>
              error("Caught exception in process loop.", e)
              throw e
          } finally {
            info("Shutting down.")
      
            shutdownConsumers
            shutdownTask
            shutdownStores
      

      In this case, the catch block merely catches Exceptions and not Errors.

      Consider the following sequence:
      1. `NoSuchMethodError` thrown in the startup sequence.
      2. The error is not caught in the catch block (hence, not logged) and the control reaches the finally block.
      3. The finally block throws an exception in one of the shutdown methods.
      4. The thrown exception completely masks the underlying NoSuchMethodError.

      Catching all Throwables will atleast help log the error.

      Ideally, finally block should be idempotent and not throw exceptions (but, that's for a different ticket since it's larger in scope)

      Attachments

        Issue Links

          Activity

            People

              jagadish1989@gmail.com Jagadish
              jagadish1989@gmail.com Jagadish
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: