# HG changeset patch # User Pierre-Yves David # Date 1535366447 -7200 # Node ID 130a60a51fff07457ae021bf87b726f3089eb022 # Parent b375398074b05941fa92ccfbcd99be82ae78a32e sqlcache: also catch malformed database error This is apparently another way for sqlite to fail at concurrency. diff -r b375398074b0 -r 130a60a51fff hgext3rd/evolve/obsdiscovery.py --- a/hgext3rd/evolve/obsdiscovery.py Mon Aug 27 12:40:41 2018 +0200 +++ b/hgext3rd/evolve/obsdiscovery.py Mon Aug 27 12:40:47 2018 +0200 @@ -437,7 +437,7 @@ if obshash is not None: value = obshash[0] self._data[rangeid] = value - except sqlite3.OperationalError: + except (sqlite3.DatabaseError, sqlite3.OperationalError): # something is wrong with the sqlite db # Since this is a cache, we ignore it. if '_con' in vars(self): @@ -489,7 +489,7 @@ con.executemany(_delete, ranges) for r in ranges: self._data.pop(r, None) - except sqlite3.OperationalError as exc: + except (sqlite3.DatabaseError, sqlite3.OperationalError) as exc: repo.ui.log('evoext-cache', 'error while updating obshashrange cache: %s' % exc) del self._updating return @@ -584,7 +584,7 @@ return try: return self._trysave(repo) - except (sqlite3.OperationalError, sqlite3.IntegrityError) as exc: + except (sqlite3.DatabaseError, sqlite3.OperationalError, sqlite3.IntegrityError) as exc: # Catch error that may arise under stress # # operational error catch read-only and locked database diff -r b375398074b0 -r 130a60a51fff hgext3rd/evolve/stablerangecache.py --- a/hgext3rd/evolve/stablerangecache.py Mon Aug 27 12:40:41 2018 +0200 +++ b/hgext3rd/evolve/stablerangecache.py Mon Aug 27 12:40:47 2018 +0200 @@ -184,7 +184,7 @@ value = self._con.execute(_querysubranges, rangeid).fetchall() # in memory caching of the value cache[rangeid] = value - except sqlite3.OperationalError: + except (sqlite3.DatabaseError, sqlite3.OperationalError): # something is wrong with the sqlite db # Since this is a cache, we ignore it. if '_con' in vars(self): @@ -236,7 +236,7 @@ return try: return self._trysave(repo) - except (sqlite3.OperationalError, sqlite3.IntegrityError) as exc: + except (sqlite3.DatabaseError, sqlite3.OperationalError, sqlite3.IntegrityError) as exc: # Catch error that may arise under stress # # operational error catch read-only and locked database