I was wondering if there is a way to force a graceful failure for a
multilang Bolt.

Basically, I have a web app written in PHP (that's never going to change
unfortunately).  It has highly parallelizable backend processing (also
written in PHP of course to reuse the biz logic) I used to self manage
(e.g. running N PHP processes across M machines).  Wrapping this system in
Storm simplifies my IT world.

So far so good.

But the PHP code has memory leaks.  Previously I didn't care, I just had
the php restart itself on OOM failure.  But, in Storm things keep grinding
to a halt.  I started using Storm in 0.92 and hit one bug (I forgot case #,
but basically the ShellBolt wouldn't die even though the managed PHP
process did, eventually starving the cluster).  I'm trying 0.93-rc1 and I
hit another bug (STORM-404 that solves STORM-329... I think...).

I'm wondering if there is a way to have PHP terminate itself in a
controlled way that allows Storm to quickly heal itself (since I can have
PHP watch itself in terms of memory usage).  Looking at the multilang
protocol, I don't see a "stop" concept.  And, since ShellBolt "pushes" to
PHP, I *think* calling exit() will be no different than OOM'ing (as both
just break the STDIN/STDOUT pipes), other than the status code returned.

Yes, in parallel I'm trying to solve all memory leaks, but that's looking
to be a big chore.

And, maybe I'm just getting unlucky on hitting edge cases on Storm grinding
to a halt?

will

Reply via email to