Merge "FileImage: make thread-safe"

This commit is contained in:
Treehugger Robot
2019-04-13 01:15:16 +00:00
committed by Gerrit Code Review

View File

@@ -205,6 +205,8 @@ class FileImage(Image):
self.clobbered_blocks = RangeSet() self.clobbered_blocks = RangeSet()
self.extended = RangeSet() self.extended = RangeSet()
self.generator_lock = threading.Lock()
self.hashtree_info = None self.hashtree_info = None
if hashtree_info_generator: if hashtree_info_generator:
self.hashtree_info = hashtree_info_generator.Generate(self) self.hashtree_info = hashtree_info_generator.Generate(self)
@@ -236,6 +238,9 @@ class FileImage(Image):
self._file.close() self._file.close()
def _GetRangeData(self, ranges): def _GetRangeData(self, ranges):
# Use a lock to protect the generator so that we will not run two
# instances of this generator on the same object simultaneously.
with self.generator_lock:
for s, e in ranges: for s, e in ranges:
self._file.seek(s * self.blocksize) self._file.seek(s * self.blocksize)
for _ in range(s, e): for _ in range(s, e):