|
@@ -705,6 +705,13 @@ class LoggedIO:
|
|
|
else:
|
|
|
yield tag, key, offset
|
|
|
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)
|
|
|
|
|
|
def recover_segment(self, segment, filename):
|