Skip to content

fix(disposablerequest): prevent stuck external-create-pending#177

Open
davidferlay wants to merge 1 commit into
crossplane-contrib:mainfrom
davidferlay:disposablerequestpending
Open

fix(disposablerequest): prevent stuck external-create-pending#177
davidferlay wants to merge 1 commit into
crossplane-contrib:mainfrom
davidferlay:disposablerequestpending

Conversation

@davidferlay
Copy link
Copy Markdown

Description of your changes

DisposableRequest gets stuck in external-create-pending after recreation or failed Create calls.

The crossplane-runtime creation guard hard-stops reconciliation because the controller does not declare its external name as deterministic.

Fix:

  • Add managed.WithDeterministicExternalName(true) to both cluster-scoped and namespaced DisposableRequest reconcilers
  • This tells the runtime it is safe to proceed past ambiguous creation state, since the external name is always the Kubernetes object name and the HTTP call is stateless

Fixes #176

I have:

  • Read and followed Crossplane's contribution process.
  • Run make reviewable test to ensure this PR is ready for review.

How has this code been tested

  • Full test suite passes (23 packages)
  • Added regression test ResourceNotSyncedWithCreatePending: verifies Observe returns ResourceExists: false when Synced=false even with external-create-pending annotation set
  • Validated manually on GKE 1.31 with provider-http v1.0.14 and crossplane-runtime v2.0.0

Signed-off-by: davidferlay <davidferlay.life@gmail.com>
@davidferlay davidferlay force-pushed the disposablerequestpending branch from 3b2c302 to d64aad7 Compare May 15, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DisposableRequest stuck in external-create-pending after recreation

1 participant