Address comments in 8921029 extract_from_cab script now takes a global lock while extracting from the CAB file.
http://codereview.chromium.org/8921029/ BUG=107291 Review URL: http://codereview.chromium.org/8929001 git-svn-id: http://src.chromium.org/svn/trunk/src/build@114173 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This commit is contained in:
Родитель
bcdf5fd673
Коммит
34f1cc1bdc
|
@ -12,6 +12,7 @@ import tempfile
|
|||
|
||||
lock_file = os.path.join(tempfile.gettempdir(), 'expand.lock')
|
||||
|
||||
|
||||
def acquire_lock():
|
||||
while True:
|
||||
try:
|
||||
|
@ -20,13 +21,15 @@ def acquire_lock():
|
|||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
print 'Cab extraction could not get exclusive lock. Retrying in 1 sec...'
|
||||
time.sleep(1000)
|
||||
print 'Cab extraction could not get exclusive lock. Retrying in 100ms...'
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
def release_lock(fd):
|
||||
os.close(fd)
|
||||
os.unlink(lock_file)
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 4:
|
||||
print 'Usage: extract_from_cab.py cab_path archived_file output_dir'
|
||||
|
@ -40,13 +43,7 @@ def main():
|
|||
level = subprocess.call(
|
||||
['expand', cab_path, '-F:' + archived_file, output_dir])
|
||||
if level != 0:
|
||||
print 'Cab extraction(%s, %s, %s) failed.' % (
|
||||
cab_path, archived_file, output_dir)
|
||||
print 'Trying a second time.'
|
||||
level = subprocess.call(
|
||||
['expand', cab_path, '-F:' + archived_file, output_dir])
|
||||
if level != 0:
|
||||
return level
|
||||
return level
|
||||
finally:
|
||||
release_lock(lock_fd)
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче