DashengJu created STORM-443:
-------------------------------

             Summary: multilang log's loglevel protocol  can cause hang
                 Key: STORM-443
                 URL: https://issues.apache.org/jira/browse/STORM-443
             Project: Apache Storm (Incubating)
          Issue Type: Bug
    Affects Versions: 0.9.3-incubating
            Reporter: DashengJu


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 [~xiaokang] 's PR 
https://github.com/apache/incubator-storm/pull/46



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to