Prevent the renderer from hanging if the main model panics during its init #905
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.
This should fix #904
The issue arises if the main model panics during init. If this happens it tries to send a signal via
r.done
. But nothing is readingr.done
untilgo r.listen()
is called inr.start()
.In
r.start()
ther.ticker
value is set up, thenr.once
is initialized, and then finallygo r.listen()
is called. Sincer.ticker
is only assigned a value in this one place we can be reasonably certain that if it is non-nil thatgo r.listen()
has been called and it is monitoring ther.done
channel.An alternate solution would be to add a new variable to indicate that the system has entered
r.listen()
. I like that solution better, but I wasn't sure if it makes sense to add another variable for this edge case.