diff options
author | 2018-07-01 19:41:03 -0700 | |
---|---|---|
committer | 2018-07-01 19:42:30 -0700 | |
commit | b9166943e5dc23f7ce8ef2dce3cb98e5ce26e50b (patch) | |
tree | 1a25cc094c95b4cbed711712256683e138038114 /src/test/shell/integration | |
parent | 1e54246d27417dd69aa5553da9e945254c492cd0 (diff) |
Restart node building if previous dep is dirty, fix check-then-act races
While initializing the SkyFunctionEnvironment for a node being built, if
a previously requested dep is found to be not done, reset and re-enqueue
the building node. This lets the node handle the not-done dep like any
other not-done dep (e.g. by enqueuing it or by waiting to be signalled
by it).
Similarly, while registering newly requested deps when building a node
yields a value or an error, if a newly requested dep is found to be not
done, return without completing the node, so that it may be signalled by
the dep (without crashing; done nodes cannot be signalled).
Also fixes a handful of remaining check-then-act races during Skyframe
evaluation that were vulnerable to done->dirty node transitions.
(Note that done->dirty node transitions during evaluation are planned,
but not yet possible.)
RELNOTES: None.
PiperOrigin-RevId: 202886360
Diffstat (limited to 'src/test/shell/integration')
0 files changed, 0 insertions, 0 deletions