[
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)