Index: git_cache.py |
diff --git a/git_cache.py b/git_cache.py |
index d36686485f550cc8a3c18606a41e193c7978b7ef..1ac9a41c23f56aa147a0131eda6eb9cb574ef864 100755 |
--- a/git_cache.py |
+++ b/git_cache.py |
@@ -12,6 +12,7 @@ import optparse |
import os |
import re |
import tempfile |
+import threading |
import time |
import shutil |
import subprocess |
@@ -144,6 +145,7 @@ class Mirror(object): |
gsutil_exe = os.path.join( |
os.path.dirname(os.path.abspath(__file__)), |
'third_party', 'gsutil', 'gsutil') |
+ cachepath_lock = threading.Lock() |
def __init__(self, url, refs=None, print_func=None): |
self.url = url |
@@ -202,6 +204,7 @@ class Mirror(object): |
@classmethod |
def GetCachePath(cls): |
+ cls.cachepath_lock.acquire() |
if not hasattr(cls, 'cachepath'): |
try: |
cachepath = subprocess.check_output( |
@@ -209,8 +212,10 @@ class Mirror(object): |
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') |
def RunGit(self, cmd, **kwargs): |