The issue is probably with the order in which storm shoots processes. All of
the processes register a pid with the supervisor, and it shoots them in the
order that the file system returns them, which is file system dependent, at
least on Linux. In all likelihood the supervisor is shooting the child process
before it shoots the worker and the worker commits suicide as it was designed
to do when the child process exits. - Bobby
On Friday, February 20, 2015 8:58 AM, Artem K <[email protected]>
wrote:
Hi, I have a quick question. I have set up a local storm cluster on my
machine. I have also implemented a simple topology. One of the pieces in my
topology is asimple python multilang component. The component works fine, it
does everything I want it to do. However, when I send a kill statement to the
local topology, everything in my topology beings shutting down. One of the
errors I receive is the following
29748 [Thread-23] ERROR backtype.storm.task.ShellBolt - Halting process:
ShellBolt died.java.lang.RuntimeException:
backtype.storm.multilang.NoOutputException: Pipe to subprocess seems to be
broken! No output read.Serializer Exception:(Unable to capture error
stream).....
kill: 58511: No such process29760 [main] INFO backtype.storm.util - Error when
trying to kill 58511. Process is probably already dead.30769 [main] INFO
backtype.storm.util - Error when trying to kill 58511. Process is probably
already dead.kill: 58511: No such process......
Now obviously this happens because the shell bolt has been terminated. I
eventually want to deploy this on an actual productioncluster. So my question
to you is, how do you manually send a shutdown signal through the STDOUT in
order to not get thisPipe to subprocess exception. Basically, I want to
manually close the pipe after I am for sure done with it. I have been playing
aroundwith the code, and simply sending a print statement with "end" does not
work. Thanks.