Merge pull request #1643 from ThomasWaldmann/fix-1551

fix closed FD issue, fixes #1551
This commit is contained in:
enkore 2016-09-26 09:30:49 +02:00 committed by GitHub
commit e9486ec348
1 changed files with 7 additions and 0 deletions

View File

@ -705,6 +705,13 @@ class LoggedIO:
else: else:
yield tag, key, offset yield tag, key, offset
offset += size offset += size
# we must get the fd via get_fd() here again as we yielded to our caller and it might
# have triggered closing of the fd we had before (e.g. by calling io.read() for
# different segment(s)).
# by calling get_fd() here again we also make our fd "recently used" so it likely
# does not get kicked out of self.fds LRUcache.
fd = self.get_fd(segment)
fd.seek(offset)
header = fd.read(self.header_fmt.size) header = fd.read(self.header_fmt.size)
def recover_segment(self, segment, filename): def recover_segment(self, segment, filename):