From patchwork Fri Jan 31 23:02:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7893: nodemap: update the index with the newly written data (when appropriate) From: phabricator X-Patchwork-Id: 44849 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Fri, 31 Jan 2020 23:02:12 +0000 marmoute updated this revision to Diff 19801. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7893?vs=19774&id=19801 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7893/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7893 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS To: marmoute, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -100,6 +100,8 @@ with revlog.opener(datafile, b'r+') as fd: fd.seek(target_docket.data_length) fd.write(data) + fd.seek(0) + new_data = fd.read(target_docket.data_length + len(data)) target_docket.data_length += len(data) target_docket.data_unused += data_changed_count @@ -113,6 +115,7 @@ data = persistent_data(revlog.index) # EXP-TODO: if this is a cache, this should use a cache vfs, not a # store vfs + new_data = data with revlog.opener(datafile, b'w') as fd: fd.write(data) target_docket.data_length = len(data) @@ -122,6 +125,9 @@ with revlog.opener(revlog.nodemap_file, b'w', atomictemp=True) as fp: fp.write(target_docket.serialize()) revlog._nodemap_docket = target_docket + if util.safehasattr(revlog.index, "update_nodemap_data"): + revlog.index.update_nodemap_data(target_docket, new_data) + # EXP-TODO: if the transaction abort, we should remove the new data and # reinstall the old one.