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

SamzaContainer should catch all Throwables instead of only exceptions

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.12.0
    • Component/s: None
    • Labels:
      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

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

                Dates

                • Created:
                  Updated:
                  Resolved: