MultiWorker coalesces worker failures and raises bundled exception.
commitb5db4855c1b1cfcfef9e7431bf37195f5e949147
authorAlexander Chow <achow@fb.com>
Fri, 16 Mar 2018 07:21:06 +0000 (16 00:21 -0700)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Mon, 19 Mar 2018 23:42:30 +0000 (19 16:42 -0700)
treea0523e20e8c472f944121de552489aa335bf1901
parentf50615af81c0f3fe694a437c771461a1f6c2883e
MultiWorker coalesces worker failures and raises bundled exception.

Summary:
Add support to MultiWorker.call for a coalesced failure of workers.

Right now, when OOM-killer sigkills one worker process we sometimes
don't see it. Instead, it leaves SharedMem in a corrupted state and we
see some other worker fail for reasons unrelated to sigkill.

But we want to actually detect that OOM-killer's sigkill.

This lets us do that.

When a worker failure is encountered, we continue looking through the remaining
workers looking for more failures, coalesce them all together, and throw a
single unified exception for all of the failed workers.

Reviewed By: dabek

Differential Revision: D7210619

fbshipit-source-id: d853e06278156c6f810d1a8ad2457ecd006a2f1e
hphp/hack/src/procs/bucket.mli
hphp/hack/src/procs/multiThreadedCall.ml
hphp/hack/src/procs/multiThreadedCall.mli
hphp/hack/src/procs/multiWorker.ml
hphp/hack/src/procs/multiWorker.mli
hphp/hack/src/procs/multiWorkerLwt.ml
hphp/hack/src/procs/workerController.ml
hphp/hack/test/procs/procs_unit_test.ml