obsolete: improve locking when writing obsolete data
diff --git a/hgext/obsolete.py b/hgext/obsolete.py --- a/hgext/obsolete.py +++ b/hgext/obsolete.py @@ -387,15 +387,19 @@ def reposetup(ui, repo): def _writeobsrels(self): """Write obsolete relation on disk""" # XXX handle lock - f = self.opener('obsolete-relations', 'w', atomictemp=True) + lock = self.wlock() try: - _obsserialise(self._obssubrels, f) + f = self.opener('obsolete-relations', 'w', atomictemp=True) try: - f.rename() - except AttributeError: # old version + _obsserialise(self._obssubrels, f) + try: + f.rename() + except AttributeError: # old version + f.close() + finally: f.close() finally: - f.close() + lock.release() ### local clone support