-
Notifications
You must be signed in to change notification settings - Fork 9.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
create_before_destroy across modules #22937
Commits on Oct 24, 2019
-
apply edge transforamtions after references
We can't correctly resolve the destroy ordering if all references haven't been assigned to each node.
Configuration menu - View commit details
-
Copy full SHA for 7c703b1 - Browse repository at this point
Copy the full SHA 7c703b1View commit details -
Use Descendants rather than UpEdges in CBD
When looking for dependencies to fix when handling create_before_destroy, we need to look past more than one edge, as dependencies may appear transitively through outputs and variables. Use Descendants rather than UpEdges. We have the full graph to use for the CBD transformation, so there's no longer any need to create a temporary graph, which may differ from the original.
Configuration menu - View commit details
-
Copy full SHA for 8f35984 - Browse repository at this point
Copy the full SHA 8f35984View commit details -
fix CBD tests to work on real data
The CBDEdgeTransformer tests worked on fake data structures, with a synthetic graph, and configs that didn't match. Update them to generate a more complete graph, with real node implementations, from real configs. The output graph is filtered down to instances, and the results still functionally match the original expected test results, with some minor additions due to using the real implementation.
Configuration menu - View commit details
-
Copy full SHA for 470362b - Browse repository at this point
Copy the full SHA 470362bView commit details -
failing test for module instance replace cycle
Destroy-time references are not correctly or fully inverted when crossing module boundaries, causing cycle during apply.
Configuration menu - View commit details
-
Copy full SHA for 3eb0e74 - Browse repository at this point
Copy the full SHA 3eb0e74View commit details -
do not connect destroy and resource nodes
Destroy nodes do not need to be connected to the resource (prepare state) node when adding them to the graph. Destroy nodes already have a complete state in the graph (which is being destroyed), any references will be added in the ReferenceTransformer, and the proper connection to the create node will be added in the DestroyEdgeTransformer. Under normal circumstances this makes no difference, as create and destroy nodes always have an dependency, so having the prepare state handled before both only linearizes the operation slightly in the normal destroy-then-create scenario. However if there is a dependency on a resource being replaced in another module, there will be a dependency between the destroy nodes in each module (to complete the destroy ordering), while the resource node will depend on the variable->output->resource chain. If both the destroy and create nodes depend on the resource node, there will be a cycle.
Configuration menu - View commit details
-
Copy full SHA for eb6e7bb - Browse repository at this point
Copy the full SHA eb6e7bbView commit details -
failing test with destroy cycle
after the previous commit the cycle is broken, but we can't evaluate resource counts that depends on data sources being destroyed.
Configuration menu - View commit details
-
Copy full SHA for 7108560 - Browse repository at this point
Copy the full SHA 7108560View commit details -
prune unused resources from apply
If a resource is only destroying instances, there is no reason to prepare the state and we can remove the Resource (prepare state) nodes. They normally have pose no issue, but if the instances are being destroyed along with their dependencies, the resource node may fail to evaluate due to the missing dependencies (since destroy happens in the reverse order). These failures were previously blocked by there being a cycle when the destroy nodes were directly attached to the resource nodes.
Configuration menu - View commit details
-
Copy full SHA for f766bb8 - Browse repository at this point
Copy the full SHA f766bb8View commit details