Skip to content

Conversation

@kathap
Copy link
Contributor

@kathap kathap commented Nov 7, 2025

Add idempotent droplet creation:

  • if there exists already a droplet, take that one and ensure buildpack_lifecycle_data is attached (but don’t overwrite)
  • if not create a new droplet

Thanks for contributing to cloud_controller_ng. To speed up the process of reviewing your pull request please provide us with:

  • A short explanation of the proposed change:
    Add idempotent droplet creation. This will add one simple SQL query to check for already existing droplet:
    SELECT * FROM "droplets" WHERE "build_guid" = 'abcd-1234' LIMIT 1;

  • An explanation of the use cases your change solves
    Fix hanging staging on cc-uploader kill caused by 2 created droplets with same build_guid. The Problem was if cc-uploader would run into uplaod timeout or cc-iuploader would be killed hard, then diego sees its upload request failed, diego sends a new upload reuqest to a healthy VM and with that a new droplet was created for the same build, which led to staging saving error "diego.staging.buildpack.saving-staging-result-failed", "error":"undefined method `buildpacks' for nil:NilClass","build" because completion handler tried to save the result with the first droplet guid but that droplet had no longer buildpack_lifecycle_data assigned, those were now assigned to the 2. droplet. Build and droplets remained in state STAGING forever and staging finally failed because of timeout.

  • Links to any other associated PRs

  • I have reviewed the contributing guide

  • I have viewed, signed, and submitted the Contributor License Agreement

  • I have made this pull request to the main branch

  • I have run all the unit tests using bundle exec rake

  • I have run CF Acceptance Tests

add idempotent droplet creation via build lock + find-or-create:
- lock build:
  SELECT * FROM builds WHERE id = $1 FOR UPDATE LIMIT 1;
- if there exists already a droplet, take that one and ensure
  buildpack_lifecycle_data is attached (but don’t overwrite)
@kathap kathap marked this pull request as draft November 7, 2025 15:37
@kathap kathap force-pushed the fix-hanging-staging-on-cc-uploader-kill branch from 644755a to 47e6661 Compare November 10, 2025 11:42
@kathap kathap marked this pull request as ready for review November 14, 2025 07:59
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.

1 participant