Mercurial > hg
diff mercurial/revlogutils/nodemap.py @ 46971:a3720569a43f
nodemap: deal with data mmap error
If the file is too small, the mmapread call would raise a ValueError. We catch
that and ignore nodemap content (as we do without mmap). This make the repository
slightly slower (until the next write) but usable. Unlike the current crash.
Differential Revision: https://phab.mercurial-scm.org/D10458
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 16 Apr 2021 15:39:00 +0200 |
parents | e2f7b2695ba1 |
children | f38bf44e077f |
line wrap: on
line diff
--- a/mercurial/revlogutils/nodemap.py Fri Apr 16 14:59:13 2021 +0200 +++ b/mercurial/revlogutils/nodemap.py Fri Apr 16 15:39:00 2021 +0200 @@ -53,7 +53,11 @@ try: with revlog.opener(filename) as fd: if use_mmap: - data = util.buffer(util.mmapread(fd, data_length)) + try: + data = util.buffer(util.mmapread(fd, data_length)) + except ValueError: + # raised when the read file is too small + data = b'' else: data = fd.read(data_length) except (IOError, OSError) as e: