[ 
https://issues.apache.org/jira/browse/STORM-443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14089009#comment-14089009
 ] 

ASF GitHub Bot commented on STORM-443:
--------------------------------------

GitHub user dashengju opened a pull request:

    https://github.com/apache/incubator-storm/pull/217

    [STORM-443] fix the problem of log level implementation to compatible with 
old log p...

    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

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dashengju/incubator-storm 
Multilang_JsonSerializer

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-storm/pull/217.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #217
    
----
commit 837b9e50acbfb3b91009ed08259c44e0efebcebf
Author: JuDasheng <[email protected]>
Date:   2014-08-07T08:39:59Z

    fix the problem of log level implementation to compatible with old log 
protocol with no loglevel

----


> 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