Uploaded image for project: 'Apache Storm'
  1. Apache Storm
  2. STORM-443

multilang log's loglevel protocol can cause hang

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.3
    • Fix Version/s: 0.9.3
    • Component/s: storm-multilang
    • Labels:
      None

      Description

      Storm now support logging level to multilang protocol spout and bolt. But the implementation is not compatible with old log protocol with no logging level.

      With old topology who use old protocol, when they send log with no loglevel, JsonSerializer's readShellMsg function will throw NPE at:
      if (command.equals("log"))

      { long logLevel = (Long)msg.get("level"); //throw NPE at here shellMsg.setLogLevel((int)logLevel); }

      ShellBolt will catch the NPE, and call die(), and die() will get error info from sub process's error stream in _process.getProcessTerminationInfoString(), but the error stream have no data come, it will hangs.
      private void die(Throwable exception)

      { String processInfo = _process.getProcessInfoString() + _process.getProcessTerminationInfoString(); _exception = new RuntimeException(processInfo, exception); }

      This PR will fix the problem of log level implementation to compatible with old log protocol. And the die problem should be solved by Kang Xiao 's PR https://github.com/apache/incubator-storm/pull/46

        Attachments

          Activity

            People

            • Assignee:
              dashengju DashengJu
              Reporter:
              dashengju DashengJu

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment