# HG changeset patch # User Pierre-Yves David # Date 1513824174 -3600 # Node ID ab5172ba3c81fa3fbe406f97b76ed6440c911317 # Parent f4e28b7811433c0f0fef4e224b4de4cd82f6d5a1 stablerange: clarify sql transaction logic This should help concurrent access. diff -r f4e28b781143 -r ab5172ba3c81 hgext3rd/evolve/stablerangecache.py --- a/hgext3rd/evolve/stablerangecache.py Thu Dec 21 03:30:13 2017 +0100 +++ b/hgext3rd/evolve/stablerangecache.py Thu Dec 21 03:42:54 2017 +0100 @@ -193,6 +193,7 @@ con = self._db() if con is None: return + con.execute('BEGIN IMMEDIATE;') with con: for req in _sqliteschema: con.execute(req) @@ -204,6 +205,7 @@ con.execute(_newmeta, meta) else: con = self._con + con.execute('BEGIN IMMEDIATE;') meta = con.execute(_querymeta).fetchone() if meta[2] != self._ondisktipnode or meta[1] != self._ondisktiprev: # drifting is currently an issue because this means another @@ -215,6 +217,7 @@ data = (meta[2], meta[1], self._ondisktiprev, self._ondisktipnode) repo.ui.warn(msg) repo.ui.warn(hint % data) + con.execute('ROLLBACK;') return meta = [self._tiprev, self._tipnode,