fix(e2core): Deal with dead processes #429
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related to #426
This is a quality of life improvement that deals with crashed processes and recovery.
When using the
command.Start()
function call, the process starts in the background. We're supposed to use thecommand.Wait()
to determine when either the process finished, or exited for some other reason.This changeset accommodates collecting the wait functions, starts them for each sub process, and when they unblock, their ports are added to a
died
map, which will then be removed automatically from watcher's bookkeeping.I've tested this manually by:
e2core
usingmake docker/dev
docker compose up
(this is internal)docker compose logs e2core --follow
(this is internal)docker exec -i -t a063f35d5c2b /bin/bash
where thea06...
is the image ID you get if you list the images withdocker ps
for e2corels -l /proc/*/exe
, which will have a similar output:kill -9 16
to terminate that