Bug #25626
closedrace condition when creating multiple repos in same product
Description
If you attempt to create multiple repos on the same product, it is possible that multiple `Candlepin::Environment::SetContent` actions will run at the same time. This may result in candlepin being updated with conflicting info, and one request will "undo" or delete another's update.
Repro steps (many thanks to pmoravec):
#!/bin/bash hmr="hammer -u admin -p changeme" org="TestOrg" # create this org ahead of time product="ZOO-1" # increment this each time you want to test the bug $hmr product create --name=$product --label=$product --organization=$org from=${1:-1} to=${2:-10} for i in $(seq $from $to); do $hmr repository create --product=$product --organization=$org --name=zoo_${i} --content-type=yum --url=https://repos.fedorapeople.org/repos/pulp/pulp/demo_repos/zoo/ & done wait for i in $(seq $from $to); do $hmr repository synchronize --organization=$org --product=$product --name=zoo_${i} --async & done while [ $($hmr task list --search "state = running" | grep -ci sync) -gt 0 ]; do sleep 5 done
After this script runs, attach a subscription to the "ZOO-1" product to a host, and check if it has all of the repos. If you hit this bug, you'll only be subscribed a few (possibly even just one) of the repos created. You'll also see DELETE statements in candlepin.log like this:
INFO org.candlepin.common.filter.LoggingFilter - Request: verb=DELETE, uri=/candlepin/environments/ac912e17404a24abc9169113c0051b8/content?content=1543947592886
This bugfix is to keep Katello from inadvertently deleting content off of a product during concurrent repo creates. There's a candlepin bug that needs to be handled as well, but that is outside the scope of this issue.
Updated by The Foreman Bot almost 6 years ago
- Status changed from New to Ready For Testing
- Pull request https://github.com/Katello/katello/pull/7867 added
Updated by Andrew Kofink almost 6 years ago
- Target version set to Katello 3.11.0
- Triaged changed from No to Yes
Updated by Chris Duryee almost 6 years ago
- Status changed from Ready For Testing to Closed
Applied in changeset katello|e737e2e335bb72cda791eba8f3890b0c2585f4e2.