-
Notifications
You must be signed in to change notification settings - Fork 106
[monarch] remove HYPERACTOR_MANAGED_SUBPROCESS #354
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) [ghstack-poisoned]
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) ghstack-source-id: 292916641 Pull Request resolved: #354
|
This pull request was exported from Phabricator. Differential Revision: D77392241 |
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) [ghstack-poisoned]
Pull Request resolved: #354 HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) ghstack-source-id: 292917411
|
This pull request was exported from Phabricator. Differential Revision: D77392241 |
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) [ghstack-poisoned]
Pull Request resolved: #354 HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. ghstack-source-id: 292926774 Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/)
|
This pull request was exported from Phabricator. Differential Revision: D77392241 |
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) [ghstack-poisoned]
Pull Request resolved: #354 HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. ghstack-source-id: 292933296 Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/)
|
This pull request was exported from Phabricator. Differential Revision: D77392241 |
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/) [ghstack-poisoned]
Pull Request resolved: #354 HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning. It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies. This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes). Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for `Allocator2Process` messages, and will error out when the channel is closed due to parent process death. ghstack-source-id: 292980414 Differential Revision: [D77392241](https://our.internmc.facebook.com/intern/diff/D77392241/)
|
This pull request was exported from Phabricator. Differential Revision: D77392241 |
|
This pull request has been merged in 16687f8. |
Summary: ## [1.1.10] - 2025-03-03 - Suppress `clippy::elidable_lifetime_names` lint in generated code. ## [1.1.9] - 2025-02-03 - Suppress `clippy::missing_const_for_fn` lint in generated code. ## [1.1.8] - 2025-01-06 - Suppress `unnameable_types`, `clippy::absolute_paths`, `clippy::min_ident_chars`, `clippy::pub_with_shorthand`, `clippy::single_call_fn`, `clippy::single_char_lifetime_names` lints in generated code. ## [1.1.7] - 2024-10-24 - Work around an issue on negative_impls that allows unsound overlapping `Unpin` implementations. ([meta-pytorch#357](taiki-e/pin-project#357)) ## [1.1.6] - 2024-10-05 - Suppress `clippy::needless_lifetimes` lint in generated code. - Disable `derive` feature of `syn` dependency. ## [1.1.5] - 2024-03-05 - Suppress `unused_qualifications` lint in generated code. ## [1.1.4] - 2024-01-25 - Suppress `clippy::missing_docs_in_private_items` and `clippy::missing_inline_in_public_items` lints in generated code. ([meta-pytorch#356](taiki-e/pin-project#356), thanks daxpedda) ## [1.1.3] - 2023-08-06 - Hide documentation of the `Unpin` implementation for `!Unpin` option to work around [rustdoc issue](rust-lang/rust#80481). ([meta-pytorch#355](taiki-e/pin-project#355), thanks matheus-consoli) ## [1.1.2] - 2023-07-02 - Inline project methods. ## [1.1.1] - 2023-06-29 - Fix build error from dependency when built with `-Z minimal-versions`. ## [1.1.0] - 2023-05-13 - Update `syn` dependency to 2. This increase the minimum supported Rust version from Rust 1.37 to Rust 1.56. ([meta-pytorch#352](taiki-e/pin-project#352), [meta-pytorch#354](taiki-e/pin-project#354), thanks maurer and daxpedda) ## [1.0.12] - 2022-08-15 - Suppress `unused_tuple_struct_fields` lint in generated code. ## [1.0.11] - 2022-07-02 - [Suppress `dead_code` lint in generated code.](taiki-e/pin-project#346) ## [1.0.10] - 2021-12-31 - Revert the increase of the minimal version of `syn` that was done in 1.0.9. ## [1.0.9] - 2021-12-26 - [Prevent abuse of private module.](taiki-e/pin-project#336) - Update minimal version of `syn` to 1.0.84. ## [1.0.8] - 2021-07-21 - [Suppress `clippy::use_self` and `clippy::type_repetition_in_bounds` lints in generated code.](taiki-e/pin-project#331) ## [1.0.7] - 2021-04-16 - [Fix compile error when using `self::` as prefix of path inside `#[pinned_drop]` impl.](taiki-e/pin-project#326) ## [1.0.6] - 2021-03-25 - [Suppress `clippy::semicolon_if_nothing_returned` lint in generated code.](taiki-e/pin-project#318) ## [1.0.5] - 2021-02-03 - [Suppress `deprecated` lint in generated code.](taiki-e/pin-project#313) ## [1.0.4] - 2021-01-09 - [Suppress `clippy::ref_option_ref` lint in generated code.](taiki-e/pin-project#308) ## [1.0.3] - 2021-01-05 - Exclude unneeded files from crates.io. ## [1.0.2] - 2020-11-18 - [Suppress `clippy::unknown_clippy_lints` lint in generated code.](taiki-e/pin-project#303) ## [1.0.1] - 2020-10-15 **Note:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](taiki-e/pin-project@ddcd880). - [Fix warnings when `#[pin_project]` attribute used within `macro_rules!` macros.](taiki-e/pin-project#298) ## [1.0.0] - 2020-10-13 **Note:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](taiki-e/pin-project@ddcd880). - [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](taiki-e/pin-project#265) Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead: ```diff - #[pin_project] + #[pin_project(project = EnumProj)] enum Enum<T> { Variant(#[pin] T), } - #[project] fn func<T>(x: Pin<&mut Enum<T>>) { - #[project] match x.project() { - Enum::Variant(_) => { /* ... */ } + EnumProj::Variant(_) => { /* ... */ } } } ``` - [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](taiki-e/pin-project#266) Use `project_replace` argument instead. - [Optimize code generation when used on enums.](taiki-e/pin-project#270) - [Raise the minimum supported Rust version of this crate from Rust 1.34 to Rust 1.37.](taiki-e/pin-project#292) - Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, `clippy::implicit_return`, and `clippy::redundant_pub_crate` lints in generated code. ([meta-pytorch#276](taiki-e/pin-project#276), [meta-pytorch#277](taiki-e/pin-project#277), [meta-pytorch#284](taiki-e/pin-project#284)) - Diagnostic improvements. Changes since the 1.0.0-alpha.1 release: - [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-``project/pull/287) - Update minimal version of `syn` to 1.0.44. ## [1.0.0-alpha.1] - 2020-09-22 - [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](taiki-e/pin-project#265) Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead: ```diff - #[pin_project] + #[pin_project(project = EnumProj)] enum Enum<T> { Variant(#[pin] T), } - #[project] fn func<T>(x: Pin<&mut Enum<T>>) { - #[project] match x.project() { - Enum::Variant(_) => { /* ... */ } + EnumProj::Variant(_) => { /* ... */ } } } ``` - [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](taiki-e/pin-project#266) Use `project_replace` argument instead. - [Optimize code generation when used on enums.](taiki-e/pin-project#270) - Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, and `clippy::implicit_return` lints in generated code. ([meta-pytorch#276](taiki-e/pin-project#276), [meta-pytorch#277](taiki-e/pin-project#277)) - Diagnostic improvements. See also [tracking issue for 1.0 release](taiki-e/pin-project#264). Reviewed By: dtolnay, capickett Differential Revision: D79015865
Summary: Pull Request resolved: #657 ## [1.1.10] - 2025-03-03 - Suppress `clippy::elidable_lifetime_names` lint in generated code. ## [1.1.9] - 2025-02-03 - Suppress `clippy::missing_const_for_fn` lint in generated code. ## [1.1.8] - 2025-01-06 - Suppress `unnameable_types`, `clippy::absolute_paths`, `clippy::min_ident_chars`, `clippy::pub_with_shorthand`, `clippy::single_call_fn`, `clippy::single_char_lifetime_names` lints in generated code. ## [1.1.7] - 2024-10-24 - Work around an issue on negative_impls that allows unsound overlapping `Unpin` implementations. ([#357](taiki-e/pin-project#357)) ## [1.1.6] - 2024-10-05 - Suppress `clippy::needless_lifetimes` lint in generated code. - Disable `derive` feature of `syn` dependency. ## [1.1.5] - 2024-03-05 - Suppress `unused_qualifications` lint in generated code. ## [1.1.4] - 2024-01-25 - Suppress `clippy::missing_docs_in_private_items` and `clippy::missing_inline_in_public_items` lints in generated code. ([#356](taiki-e/pin-project#356), thanks daxpedda) ## [1.1.3] - 2023-08-06 - Hide documentation of the `Unpin` implementation for `!Unpin` option to work around [rustdoc issue](rust-lang/rust#80481). ([#355](taiki-e/pin-project#355), thanks matheus-consoli) ## [1.1.2] - 2023-07-02 - Inline project methods. ## [1.1.1] - 2023-06-29 - Fix build error from dependency when built with `-Z minimal-versions`. ## [1.1.0] - 2023-05-13 - Update `syn` dependency to 2. This increase the minimum supported Rust version from Rust 1.37 to Rust 1.56. ([#352](taiki-e/pin-project#352), [#354](taiki-e/pin-project#354), thanks maurer and daxpedda) ## [1.0.12] - 2022-08-15 - Suppress `unused_tuple_struct_fields` lint in generated code. ## [1.0.11] - 2022-07-02 - [Suppress `dead_code` lint in generated code.](taiki-e/pin-project#346) ## [1.0.10] - 2021-12-31 - Revert the increase of the minimal version of `syn` that was done in 1.0.9. ## [1.0.9] - 2021-12-26 - [Prevent abuse of private module.](taiki-e/pin-project#336) - Update minimal version of `syn` to 1.0.84. ## [1.0.8] - 2021-07-21 - [Suppress `clippy::use_self` and `clippy::type_repetition_in_bounds` lints in generated code.](taiki-e/pin-project#331) ## [1.0.7] - 2021-04-16 - [Fix compile error when using `self::` as prefix of path inside `#[pinned_drop]` impl.](taiki-e/pin-project#326) ## [1.0.6] - 2021-03-25 - [Suppress `clippy::semicolon_if_nothing_returned` lint in generated code.](taiki-e/pin-project#318) ## [1.0.5] - 2021-02-03 - [Suppress `deprecated` lint in generated code.](taiki-e/pin-project#313) ## [1.0.4] - 2021-01-09 - [Suppress `clippy::ref_option_ref` lint in generated code.](taiki-e/pin-project#308) ## [1.0.3] - 2021-01-05 - Exclude unneeded files from crates.io. ## [1.0.2] - 2020-11-18 - [Suppress `clippy::unknown_clippy_lints` lint in generated code.](taiki-e/pin-project#303) ## [1.0.1] - 2020-10-15 **Note:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](taiki-e/pin-project@ddcd880). - [Fix warnings when `#[pin_project]` attribute used within `macro_rules!` macros.](taiki-e/pin-project#298) ## [1.0.0] - 2020-10-13 **Note:** This release has been yanked because it [failed to compile with syn 1.0.84 and later](taiki-e/pin-project@ddcd880). - [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](taiki-e/pin-project#265) Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead: ```diff - #[pin_project] + #[pin_project(project = EnumProj)] enum Enum<T> { Variant(#[pin] T), } - #[project] fn func<T>(x: Pin<&mut Enum<T>>) { - #[project] match x.project() { - Enum::Variant(_) => { /* ... */ } + EnumProj::Variant(_) => { /* ... */ } } } ``` - [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](taiki-e/pin-project#266) Use `project_replace` argument instead. - [Optimize code generation when used on enums.](taiki-e/pin-project#270) - [Raise the minimum supported Rust version of this crate from Rust 1.34 to Rust 1.37.](taiki-e/pin-project#292) - Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, `clippy::implicit_return`, and `clippy::redundant_pub_crate` lints in generated code. ([#276](taiki-e/pin-project#276), [#277](taiki-e/pin-project#277), [#284](taiki-e/pin-project#284)) - Diagnostic improvements. Changes since the 1.0.0-alpha.1 release: - [Fix drop order of pinned fields in `project_replace`.](https://github.com/taiki-e/pin-``project/pull/287) - Update minimal version of `syn` to 1.0.44. ## [1.0.0-alpha.1] - 2020-09-22 - [Remove deprecated `#[project]`, `#[project_ref]`, and `#[project_replace]` attributes.](taiki-e/pin-project#265) Name the projected type by passing an argument with the same name as the method to the `#[pin_project]` attribute instead: ```diff - #[pin_project] + #[pin_project(project = EnumProj)] enum Enum<T> { Variant(#[pin] T), } - #[project] fn func<T>(x: Pin<&mut Enum<T>>) { - #[project] match x.project() { - Enum::Variant(_) => { /* ... */ } + EnumProj::Variant(_) => { /* ... */ } } } ``` - [Remove deprecated `Replace` argument from `#[pin_project]` attribute.](taiki-e/pin-project#266) Use `project_replace` argument instead. - [Optimize code generation when used on enums.](taiki-e/pin-project#270) - Suppress `explicit_outlives_requirements`, `box_pointers`, `clippy::large_enum_variant`, `clippy::pattern_type_mismatch`, and `clippy::implicit_return` lints in generated code. ([#276](taiki-e/pin-project#276), [#277](taiki-e/pin-project#277)) - Diagnostic improvements. See also [tracking issue for 1.0 release](taiki-e/pin-project#264). Reviewed By: dtolnay, capickett Differential Revision: D79015865 fbshipit-source-id: 4712a5147edc00fc3c4cb93febd129b8343c9596
Stack from ghstack (oldest at bottom):
HYPERACTOR_MANAGED_SUBPROCESS is intended to ensure that child processes are promptly cleaned up after spawning.
It is implemented by setting up a SIGUSR1 handler on child processes, and calling PR_SET_DEATHSIG on parent to have the parent signal the children when it dies.
This can conflict with user signal handlers (for example, checkpointing uses SIGUSR1 to coordinate between the trainer and checkpointing processes).
Better to get rid of it. It's not necessary anymore, as we have a natural cleanup when the parent dies: the child is listening on a channel for
Allocator2Processmessages, and will error out when the channel is closed due to parent process death.Differential Revision: D77392241