Merge lp:~ricardokirkner/isitdeployable/safer-unlock into lp:isitdeployable

Proposed by Ricardo Kirkner
Status: Merged
Approved by: Ricardo Kirkner
Approved revision: 264
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~ricardokirkner/isitdeployable/safer-unlock
Merge into: lp:isitdeployable
Prerequisite: lp:~ricardokirkner/isitdeployable/talisker
Diff against target: 59 lines (+30/-4)
2 files modified
revtracker/tasks.py (+6/-4)
revtracker/tests/test_tasks.py (+24/-0)
To merge this branch: bzr merge lp:~ricardokirkner/isitdeployable/safer-unlock
Reviewer Review Type Date Requested Status
Daniel Manrique (community) Approve
Review via email: mp+331722@code.launchpad.net

Commit message

make sure to only attempt unlocking branch if lock was successfully acquired

To post a comment you must log in.
Revision history for this message
Daniel Manrique (roadmr) wrote :

LGTM, the rearrangement of the try/except payload makes sense.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'revtracker/tasks.py'
2--- revtracker/tasks.py 2017-09-11 16:17:19 +0000
3+++ revtracker/tasks.py 2017-10-03 16:38:10 +0000
4@@ -657,6 +657,12 @@
5 try:
6 branch = get_branch(url, project.name, git_branch=project.git_branch,
7 fetched_branches=fetched_branches)
8+ except bzr_errors.LockContention as err:
9+ print('Can not acquire lock for {}. There is already a lock at {}. '
10+ 'Skipping.'.format(url, err.msg))
11+ return
12+
13+ try:
14 if last_revno is None:
15 last_revision = None
16 elif branch.vcs == VCS.VCS_BAZAAR:
17@@ -674,10 +680,6 @@
18 sourcedeps_path=project.sourcedeps_path,
19 fetched_branches=fetched_branches)
20 store_revisions(project, branch, revisions)
21- except bzr_errors.LockContention as err:
22- print('Can not acquire lock for {}. There is already a lock at {}. '
23- 'Skipping.'.format(url, err.msg))
24- return
25 finally:
26 branch.unlock()
27
28
29=== modified file 'revtracker/tests/test_tasks.py'
30--- revtracker/tests/test_tasks.py 2016-11-11 18:16:23 +0000
31+++ revtracker/tests/test_tasks.py 2017-10-03 16:38:10 +0000
32@@ -625,3 +625,27 @@
33 project=project, parent=rev3, revno=3, branch=dep2_url,
34 status=Revision.STATUS_UNKNOWN),
35 ))
36+
37+ def test_do_not_attempt_to_unlock_if_failed_to_get_branch(self):
38+ branch, url = self.make_commits(num_commits=2)
39+ project = self.factory.make_one(Project, url=url, git_branch='master')
40+ self.factory.make_one(
41+ Revision, project=project, revno=1, parent=None, branch='',
42+ status=Revision.STATUS_BAD, commit_message='nonsense 1')
43+ tip_revision = self.factory.make_one(
44+ Revision, project=project, revno=2, parent=None, branch='',
45+ status=Revision.STATUS_BAD, commit_message='nonsense 2')
46+ if self.vcs == VCS.VCS_GIT:
47+ tip_revision.commit_sha1 = branch.revparse_single('HEAD').id.hex
48+ tip_revision.save()
49+
50+ if self.vcs == VCS.VCS_BAZAAR:
51+ branch_with_lock = tasks.get_branch(
52+ url, project.name, git_branch=project.git_branch)
53+ assert branch_with_lock.branch.is_locked()
54+ try:
55+ with captured_stdout():
56+ tasks.update_revisions(project.pk)
57+ finally:
58+ if self.vcs == VCS.VCS_BAZAAR:
59+ branch_with_lock.unlock()

Subscribers

People subscribed via source and target branches