fixe: racing condition on conduit when printing #3308
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.
Issue #, if available:
#3267
Description of changes:
This PR adds a notify - acknowledgement handshake before the event loop uses
InputSourceto prompt user.This is necessitated by the fact that what is actually writing to stderr or stdout is not on the same thread as what is prompting the user (in an ideal world they would be).
As a bandaid fix (to hold us until we move to the new event loop where everything is in their rightful place), we are first signaling to the ui layer we are about to prompt users, and we are going to wait until the ui layer acknowledges.
Note that this works because [std::sync::mpsc] preserves order between sending and receiving
Top: with fix

Bottom: v1.19.2
(Ignore the lack of diff highlighting, this was because of ui structured mode)
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.