[PATCH] revlog: document that mmap resources are released implicitly by GC
Yuya Nishihara
yuya at tcha.org
Sun Jan 13 06:44:53 UTC 2019
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1547358986 -32400
# Sun Jan 13 14:56:26 2019 +0900
# Node ID eb6ba8bc27e0f8cc28268d6601b97f2c2a63c1c3
# Parent 81fb0d015830b5ddf89b398aa63e0b56501dc6ac
revlog: document that mmap resources are released implicitly by GC
It's okay-ish, but currently the open fd and the mapping itself are leaked
until the indexdata is deallocated. If revlog had close(), the underlying
resources should be closed there as well, but AFAIK there's no such hook
point.
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -440,6 +440,8 @@ class revlog(object):
with self._indexfp() as f:
if (mmapindexthreshold is not None and
self.opener.fstat(f).st_size >= mmapindexthreshold):
+ # TODO: should .close() to release resources without
+ # relying on Python GC
indexdata = util.buffer(util.mmapread(f))
else:
indexdata = f.read()
More information about the Mercurial-devel
mailing list