diff --git a/overviewer_core/nbt.py b/overviewer_core/nbt.py index 7a8ee46..37e3770 100644 --- a/overviewer_core/nbt.py +++ b/overviewer_core/nbt.py @@ -292,7 +292,10 @@ class MCRFileReader(object): self._file.seek(offset) # read in the chunk data header - header = self._file.read(5) + try: + header = self._file.read(5) + except OSError as e: + raise CorruptChunkError("An OSError occurred: {}".format(e.strerror)) if len(header) != 5: raise CorruptChunkError("chunk header is invalid") data_length, compression = self._chunk_header_format.unpack(header) diff --git a/overviewer_core/world.py b/overviewer_core/world.py index f1d67a0..e121002 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -1355,12 +1355,11 @@ class RegionSet(object): except nbt.CorruptionError as e: tries -= 1 if tries > 0: - # Flush the region cache to possibly read a new region file - # header - logging.debug("Encountered a corrupt chunk at %s,%s. Flushing cache and retrying", x, z) - #logging.debug("Error was:", exc_info=1) + # Flush the region cache to possibly read a new region file header + logging.debug("Encountered a corrupt chunk or read error at %s,%s. " + "Flushing cache and retrying", x, z) del self.regioncache[regionfile] - time.sleep(0.5) + time.sleep(0.25) continue else: logging.warning("The following was encountered while reading from %s:", self.regiondir)