Do threading.Lock the Right Way.
R=cmp@chromium.org, dnj@chromium.org, iannucci@chromium.org
BUG=
Review URL: https://codereview.chromium.org/499003002
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@291573 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cache.py b/git_cache.py
index d6ed2a8..bfdef80 100755
--- a/git_cache.py
+++ b/git_cache.py
@@ -200,25 +200,23 @@
@classmethod
def SetCachePath(cls, cachepath):
- cls.cachepath_lock.acquire()
- setattr(cls, 'cachepath', cachepath)
- cls.cachepath_lock.release()
+ with cls.cachepath_lock:
+ setattr(cls, 'cachepath', cachepath)
@classmethod
def GetCachePath(cls):
- cls.cachepath_lock.acquire()
- if not hasattr(cls, 'cachepath'):
- try:
- cachepath = subprocess.check_output(
- [cls.git_exe, 'config', '--global', 'cache.cachepath']).strip()
- except subprocess.CalledProcessError:
- cachepath = None
- if not cachepath:
- cls.cachepath_lock.release()
- raise RuntimeError('No global cache.cachepath git configuration found.')
- setattr(cls, 'cachepath', cachepath)
- cls.cachepath_lock.release()
- return getattr(cls, 'cachepath')
+ with cls.cachepath_lock:
+ if not hasattr(cls, 'cachepath'):
+ try:
+ cachepath = subprocess.check_output(
+ [cls.git_exe, 'config', '--global', 'cache.cachepath']).strip()
+ except subprocess.CalledProcessError:
+ cachepath = None
+ if not cachepath:
+ raise RuntimeError(
+ 'No global cache.cachepath git configuration found.')
+ setattr(cls, 'cachepath', cachepath)
+ return getattr(cls, 'cachepath')
def RunGit(self, cmd, **kwargs):
"""Run git in a subprocess."""