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:
apatrick@chromium.org 2011-12-13 03:32:12 +00:00
Родитель bcdf5fd673
Коммит 34f1cc1bdc
1 изменённых файлов: 6 добавлений и 9 удалений

Просмотреть файл

@ -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)