Freeze break request: fixing race condition breakage for pkgdb_sync
puiterwijk at redhat.com
Fri Feb 27 08:54:22 UTC 2015
Explanation in the commit message.
Note: we should work on improving the script in general, but that is not something we should
consider pushing during freeze, so this is a patch that hopefully gets us through the freeze.
Author: Patrick Uiterwijk <puiterwijk at redhat.com>
Date: Fri Feb 27 08:44:57 2015 +0000
Make pkgdb_sync more resilient by always calling SETUP_PACKAGE if master does not exist
This should make it recover in case there are any repos in a weird state (aka, no master branch).
This could for example happen if the package was created in pkgdb after pkgdb_sync ran, but before
genacls.pkgdb runs, because then gitolite will see it as a new repo, and create a totally blank repo.
Especially since pkgdb_sync will abort after the first error, it would then leave all later created
repos broken as well.
Calling setup_git_package in a repo without master branch has no ill effect:
- Running git init on a pre-initialized repo is a no-op (or at least doesn't destroy current git data)
- Since it doesn't have master, it didn't run the script, so adding the first commit and hooks etc are
what we want the script to do
Signed-off-by: Patrick Uiterwijk <puiterwijk at redhat.com>
diff --git a/roles/distgit/templates/pkgdb_sync_git_branches.py b/roles/distgit/templates/pkgdb_sync_git_branches.py
index ced139b..8643165 100644
@@ -187,7 +187,7 @@ def branch_package(pkgname, branches):
# Create the devel branch if necessary
if not os.path.exists(
- os.path.join(GIT_FOLDER, '%s.git' % pkgname)):
+ os.path.join(GIT_FOLDER, '%s.git/refs/heads/master' % pkgname)):
if 'master' in branches:
branches.remove('master') # SETUP_PACKAGE creates master
More information about the infrastructure