You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In #66 we updated the managed resource reconciler such that managed resources resolve their references on every reconcile. We resolve our references before we observe, create, update, or delete the external resource that corresponds to our managed resource. This is because:
We must resolve references before we observe the external resource, e.g. for resources like connection.servicenetworking.gcp.crossplane.io that may need its .spec.networkRef set in order to observe the external resource.
We must observe the external resource in order to know whether we need to create, update, or delete it.
Cross resource resolution returns an error and does not proceed when the managed resource under reconciliation is dependent upon a resource that does not exist, or does not have condition Ready=True. This means that when, for example:
A Subnetwork references a Network.
A Network cannot be deleted until all of its Subnetworks have been deleted.
A Subnetwork cannot be deleted when its Network is deleting.
We end up stuck. The Subnetwork can't be deleted because the Network (managed resource) is deleting, and the Network can't be deleted because the Subnetwork (external resource) hasn't been deleted.
How can we reproduce it?
Create GCP Network managed resource.
Create a GCP Subnetwork managed resource that references said Network.
Delete the Network resource.
Delete the Subnetwork resource.
Observe that neither resource ever successfully deletes.
What environment did it happen in?
Crossplane version:
The text was updated successfully, but these errors were encountered:
Return to the previous behaviour, in which we only attempt to resolve references until the first time we resolve all references successfully.
Don't resolve references when we're deleting.
Ignore errors resolving references when we're deleting.
Ignore errors resolving references at any point in our lifecycle, and rely instead of eventual consistency.
One thing to consider here is that some resources (again, specifically connection.servicenetworking.gcp.crossplane.io) may need references to be resolved in order to delete their external resource.
What happened?
In #66 we updated the managed resource reconciler such that managed resources resolve their references on every reconcile. We resolve our references before we observe, create, update, or delete the external resource that corresponds to our managed resource. This is because:
connection.servicenetworking.gcp.crossplane.io
that may need its.spec.networkRef
set in order to observe the external resource.Cross resource resolution returns an error and does not proceed when the managed resource under reconciliation is dependent upon a resource that does not exist, or does not have condition
Ready=True
. This means that when, for example:We end up stuck. The Subnetwork can't be deleted because the Network (managed resource) is deleting, and the Network can't be deleted because the Subnetwork (external resource) hasn't been deleted.
How can we reproduce it?
Observe that neither resource ever successfully deletes.
What environment did it happen in?
Crossplane version:
The text was updated successfully, but these errors were encountered: