Skip to content

Commit 92816b0

Browse files
authored
Merge pull request #5748 from stsewd/remove-one-more-lock
Call lock per task
2 parents edf00d2 + cd329d6 commit 92816b0

File tree

1 file changed

+25
-32
lines changed

1 file changed

+25
-32
lines changed

readthedocs/projects/tasks.py

+25-32
Original file line numberDiff line numberDiff line change
@@ -124,28 +124,27 @@ def sync_repo(self):
124124
),
125125
)
126126

127-
with self.project.repo_nonblockinglock(version=self.version):
128-
# Get the actual code on disk
129-
try:
130-
before_vcs.send(sender=self.version)
131-
msg = 'Checking out version {slug}: {identifier}'.format(
132-
slug=self.version.slug,
133-
identifier=self.version.identifier,
134-
)
135-
log.info(
136-
LOG_TEMPLATE,
137-
{
138-
'project': self.project.slug,
139-
'version': self.version.slug,
140-
'msg': msg,
141-
}
142-
)
143-
version_repo = self.get_vcs_repo()
144-
version_repo.update()
145-
self.sync_versions(version_repo)
146-
version_repo.checkout(self.version.identifier)
147-
finally:
148-
after_vcs.send(sender=self.version)
127+
# Get the actual code on disk
128+
try:
129+
before_vcs.send(sender=self.version)
130+
msg = 'Checking out version {slug}: {identifier}'.format(
131+
slug=self.version.slug,
132+
identifier=self.version.identifier,
133+
)
134+
log.info(
135+
LOG_TEMPLATE,
136+
{
137+
'project': self.project.slug,
138+
'version': self.version.slug,
139+
'msg': msg,
140+
}
141+
)
142+
version_repo = self.get_vcs_repo()
143+
version_repo.update()
144+
self.sync_versions(version_repo)
145+
version_repo.checkout(self.version.identifier)
146+
finally:
147+
after_vcs.send(sender=self.version)
149148

150149
def sync_versions(self, version_repo):
151150
"""
@@ -233,7 +232,8 @@ def run(self, version_pk): # pylint: disable=arguments-differ
233232
try:
234233
self.version = self.get_version(version_pk)
235234
self.project = self.version.project
236-
self.sync_repo()
235+
with self.project.repo_nonblockinglock(version=self.version):
236+
self.sync_repo()
237237
return True
238238
except RepositoryError:
239239
# Do not log as ERROR handled exceptions
@@ -432,7 +432,8 @@ def run_setup(self, record=True):
432432
if self.project.skip:
433433
raise ProjectBuildsSkippedError
434434
try:
435-
self.setup_vcs()
435+
with self.project.repo_nonblockinglock(version=self.version):
436+
self.setup_vcs()
436437
except vcs_support_utils.LockTimeout as e:
437438
self.task.retry(exc=e, throw=False)
438439
raise VersionLockedError
@@ -618,14 +619,6 @@ def setup_vcs(self):
618619
log.warning('There was an error with the repository', exc_info=True)
619620
# Re raise the exception to stop the build at this point
620621
raise
621-
except vcs_support_utils.LockTimeout:
622-
log.info(
623-
'Lock still active: project=%s version=%s',
624-
self.project.slug,
625-
self.version.slug,
626-
)
627-
# Raise the proper exception (won't be sent to Sentry)
628-
raise VersionLockedError
629622
except Exception:
630623
# Catch unhandled errors when syncing
631624
log.exception(

0 commit comments

Comments
 (0)