apache/storm — pull request #286 by HeartSaVioR (2014-10-08 14:08:47+00:00)
Title: STORM-513 check heartbeat from multilang subprocess

Related issue link : https://issues.apache.org/jira/browse/STORM-513

It seems that ShellSpout and ShellBolt doesn't check subprocess, and set heartbeat with their only states.
Subprocess could hang, but it doesn't affect ShellSpout / ShellBolt. It just stops working on tuple.
It's better to check heartbeat from subprocess, and suicide if subprocess stops working.

* Spout
* ShellSpout sends "next" to subprocess continuously
* subprocess sends "sync" to ShellSpout when "next" is received
* so we can treat "sync", or any messages to heartbeat
* Bolt
* ShellBolt sends tuples to subprocess if it's available
* so we need to send "heartbeat" tuple
* subprocess sends "sync" to ShellBolt when "heartbeat" tuple is received