dcrdtest: avoid concurrent exec.Cmd.Wait calls #22
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.
exec.Cmd.Wait is not safe to call concurrently. Instead, call this method
only once, in the goroutine started by node.start() used for abnormal process
exit. After Wait exits, assign the error and close a new cmdDone channel
added to the node struct. This allows node.stop() to detect when process
shutdown has occurred, and provides access to the error so it can be logged.
Since some other parts of node.stop() were racy on reading node.cmd, and it
was unclear how it was intended to handle the difference between a node that
was never successfully started and one that was previously stopped, another
new channel cmdStarted is added to node to distinguish these conditions.