This repository has been archived by the owner on Aug 29, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 46
Normative: [[AsyncEvaluating]] field instead of evaluating-async state #114
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This was referenced Jun 9, 2019
1c0378e
to
1d2d944
Compare
I've also included the fix / invariant of #115 in this PR as well, implementing the (2) as discussed there. |
1d2d944
to
19ff47f
Compare
Ms2ger
reviewed
Jun 10, 2019
19ff47f
to
7dd6828
Compare
Ms2ger
reviewed
Jun 10, 2019
7dd6828
to
165fea1
Compare
Ms2ger
reviewed
Jun 10, 2019
165fea1
to
dd16e30
Compare
dd16e30
to
68aed52
Compare
Ms2ger
approved these changes
Jun 12, 2019
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's say this is okay. Please do squash and land #99 first, and then squash and land this.
68aed52
to
b28d338
Compare
I've gone ahead and rebased this to the latest master. |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 PR converts the
"evaluating-async"
module state into a separate[[AsyncEvaluating]]
boolean field.We have had a bunch of PRs recently all dealing with the same root problem in cycles, and that is that the
"evaluating-async"
state is tracking two separate constraints:"evaluating"
to"evaluating-async"
in cycles.The issue is that during cycle execution, these two information constraints cannot both be maintained due to the fact that we need to transition states in a cycle as one strongly connected component. So we are missing the state in the field model, that represents "is this module in a cycle, and currently asynchronously evaluating, but pending fulfillment".
My initial incorrect attempt to fix this at #90 as well as the need to introduce the cycle boolean and even the case in #109 are all different manifestations of this same gap in the data model.
Running the case of #109 (comment) against this version of the algorithm, we can see that this new state then properly handles the conversion of cyclic to acyclic completion graphs.
This PR is based on top of the PR at #99 which should probably land first.