From 2a7013cd5a033c5be43350505d75f088e831e201 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 22 Dec 2016 13:05:22 -0500 Subject: [PATCH] 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 --- qa/tasks/workunit.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qa/tasks/workunit.py b/qa/tasks/workunit.py index 8320b24387860..c509d504eea01 100644 --- a/qa/tasks/workunit.py +++ b/qa/tasks/workunit.py @@ -313,11 +313,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, @@ -334,11 +338,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, -- 2.39.5