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
{{ message }}
Repository navigation
Upjet resources do not set observedGeneration in the Synced condition #591
upjet resources are not setting the observedGeneration in the Synced condition which causes the lastTransitionTime to be updated on every reconciliation cycle.
Create an upjet-based resource and put a watch on it. Observe that the resource is updated on every pollInterval and the only change is the lastTransitionTime in the Synced condition.
WithObservedGeneration() needs to be added to the ReconcileSuccess() conditions (and possibly others?)
I think I've just run into this, with the end symptom being an XR that wouldn't go Ready=True (provider-azure-network v2.8.3):
We changed spec.managementPolicies on an existing PrivateEndpoint MR, which bumped it to generation 9.
Upjet's update path wrote Synced=True, reason=ReconcileSuccesswithoutobservedGeneration.
Since crossplane-runtime#906, Condition.Equal treats a missing observedGeneration as equal, so later polls never rewrite the condition with the generation.
The MR stayed Synced=True and Ready=True with no observedGeneration indefinitely. Our composition only marks the MR ready when Synced.observedGeneration == metadata.generation, so the XR stayed Ready=False.
Activity
simon-pearson-cl commentedon Nov 9, 2026
I think I've just run into this, with the end symptom being an XR that wouldn't go
Ready=True(provider-azure-networkv2.8.3):spec.managementPolicieson an existingPrivateEndpointMR, which bumped it to generation 9.Synced=True, reason=ReconcileSuccesswithoutobservedGeneration.Condition.Equaltreats a missingobservedGenerationas equal, so later polls never rewrite the condition with the generation.Synced=TrueandReady=Truewith noobservedGenerationindefinitely. Our composition only marks the MR ready whenSynced.observedGeneration == metadata.generation, so the XR stayedReady=False.