sidekiq-cluster: put each sidekiq in a new pgroup
What does this MR do?
sidekiq-cluster spawns N sidekiq processes, but leaves them all in the same process group. This means that if one child kills the pgroup, the whole thing goes.
Instead, place each sidekiq into its own pgroup. This means we can terminate all subprocesses for a given sidekiq independently of its siblings.
Continue to forward signals just to the sidekiq processes, rather than to the newly-created process groups. In https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25669/diffs , they will get the ability to forward those signals to the whole process group themselves, so doing it here would cause us to double-signal. The only time we want to kill the whole process group outside of sidekiq
is if we're sending a KILL
, STOP
or other uninterruptible signal.
What are the relevant issue numbers?
Part of gitlab-ce#40396
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated via this MR -
Documentation reviewed by technical writer or follow-up review issue created -
Tests added for this feature/bug -
Tested in all supported browsers -
Conforms to the code review guidelines -
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the database guides -
Link to e2e tests MR added if this MR has Requires e2e tests label. See the Test Planning Process. -
EE specific content should be in the top level /ee
folder -
For a paid feature, have we considered GitLab.com plans, how it works for groups, and is there a design for promoting it to users who aren't on the correct plan? -
Security reports checked/validated by reviewer