-
Notifications
You must be signed in to change notification settings - Fork 51
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
eliminate flux_child_watcher_create() from the public API #6512
Comments
garlick
added a commit
to garlick/flux-core
that referenced
this issue
Jan 7, 2025
Problem: the FLUX_REACTOR_SIGCHLD flag outsources SIGCHLD handling to the libev default loop and implements non-portable child watchers using libev's ev_child. This is a road block to swapping out the internal reactor with libuv. Handle the FLUX_REACTOR_SIGCHLD flag by registering an internal flux signal watcher for SIGCHLD, in much the same way that libev does it internally for the default loop. The SIGCHLD handler reaps all process children, even those without child watchers. The following internal reactor interfaces are added so that a portable child watcher can be implemented: reactor_get_flags() Allow the flags passed to flux_reactor_create() to be accessed. reactor_sigchld_register() Register a callback for consuming (pid, status) tuples from waitpid(), which is called from the internal SIGCHLD signal watcher. reactor_sigchld_unregister() Unregister said callback. Drop the non-portable child watcher implementation from the public API. Replace them in libsubprocess with private child watchers, implemented portably with flux watchers and the above private reactor interfaces. Update unit tests. Fixes flux-framework#6512
garlick
added a commit
to garlick/flux-core
that referenced
this issue
Jan 8, 2025
Problem: child watchers have no users, are likely not required in the public API, and inhibit changing the internal reactor to libuv. Drop them. Fixes flux-framework#6512
garlick
added a commit
to garlick/flux-core
that referenced
this issue
Jan 9, 2025
Problem: child watchers have no users, are likely not required in the public API, and inhibit changing the internal reactor to libuv. Drop them. Fixes flux-framework#6512
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Problem:
flux_child_watcher_create()
is only used by internally by libsubprocess, and cannot be provided by libuv (#6492)These are not super useful on their own, given that the Flux API provides the subprocess interface. Perhaps we could remove them from the public API for now, and then a port to libuv could provide an alternative implementation within libsubprocess.
See also: https://metacpan.org/dist/EV/view/libev/ev.pod#ev_child-watch-out-for-process-status-changes
The text was updated successfully, but these errors were encountered: