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