HomePhabricator

persistent-nodemap: properly ignore non-existent `.nd` data file

Authored by SimonSapin.

Description

persistent-nodemap: properly ignore non-existent .nd data file

This code was meant to handle the case of a nodemap docket file
pointing to a nodemap data file that doesn’t exist (anymore),
but most likely caused an UnboundLocalError exception instead
when data was used on the next line without being defined.

This case is theoretically possible with a race condition
between two hg processes, but is hard to reproduce or test:

  • Process A reads a docket file and finds a UID in it that points to a given data file name.
  • Process B decides that this same data file needs compacting. It writes a new one with a different UID, overwrites the docket file, then removes the old data file.
  • Only then process A tries to a open a file that doesn’t exist anymore.

Differential Revision: https://phab.mercurial-scm.org/D9533

Details