From: Sage Weil Date: Thu, 22 Dec 2016 18:05:22 +0000 (-0500) Subject: qa/tasks/workunit: clear clone dir before retrying checkout X-Git-Tag: v0.94.10~16^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a3e9865058e12fff18ee7674fcfd8435a1a37bf4;p=ceph.git qa/tasks/workunit: clear clone dir before retrying checkout If we checkout ceph-ci.git, and don't find a branch, we'll try again from ceph.git. But the checkout will already exist and the clone will fail, so we'll still fail to find the branch. The same can happen if a previous workunit task already checked out the repo. Fix by removing the repo before checkout (the first and second times). Note that this may break if there are multiple workunit tasks running in parallel on the same role. That is already racy, so if it's happening, we'll want to switch to using a truly unique clonedir for each instantiation. Fixes: http://tracker.ceph.com/issues/18336 Signed-off-by: Sage Weil (cherry picked from commit 2a7013cd5a033c5be43350505d75f088e831e201) --- diff --git a/qa/tasks/workunit.py b/qa/tasks/workunit.py index f9816523046..a9c251d1bd5 100644 --- a/qa/tasks/workunit.py +++ b/qa/tasks/workunit.py @@ -295,11 +295,15 @@ def _run_tests(ctx, refspec, role, tests, env, subdir=None, timeout=None): remote.run( logger=log.getChild(role), args=[ + 'rm', + '-rf', + clonedir, + run.Raw('&&'), 'git', 'clone', git_url, clonedir, - run.Raw(';'), + run.Raw('&&'), 'cd', '--', clonedir, run.Raw('&&'), 'git', 'checkout', refspec, @@ -316,11 +320,15 @@ def _run_tests(ctx, refspec, role, tests, env, subdir=None, timeout=None): remote.run( logger=log.getChild(role), args=[ + 'rm', + '-rf', + clonedir, + run.Raw('&&'), 'git', 'clone', alt_git_url, clonedir, - run.Raw(';'), + run.Raw('&&'), 'cd', '--', clonedir, run.Raw('&&'), 'git', 'checkout', refspec,