sqlcache: cache OperationError when saving
This is a cache, so we should not crash when trying to operate on it.
OperationError can happens when the database is seen as readonly or locked.
--- a/hgext3rd/evolve/obsdiscovery.py Mon Aug 27 00:18:06 2018 +0200
+++ b/hgext3rd/evolve/obsdiscovery.py Mon Aug 27 00:28:19 2018 +0200
@@ -568,6 +568,12 @@
repo.ui.warn(msg)
def _save(self, repo):
+ try:
+ return self._trysave(repo)
+ except sqlite3.OperationalError as exc:
+ repo.ui.log('evoext-cache', 'error while saving new data: %s' % exc)
+
+ def _trysave(self, repo):
if self._con is None:
util.unlinkpath(self._path, ignoremissing=True)
if '_con' in vars(self):
--- a/hgext3rd/evolve/stablerangecache.py Mon Aug 27 00:18:06 2018 +0200
+++ b/hgext3rd/evolve/stablerangecache.py Mon Aug 27 00:28:19 2018 +0200
@@ -223,6 +223,12 @@
return con
def _save(self, repo):
+ try:
+ return self._trysave(repo)
+ except sqlite3.OperationalError as exc:
+ repo.ui.log('evoext-cache', 'error while saving new data: %s' % exc)
+
+ def _trysave(self, repo):
repo = repo.unfiltered()
repo.depthcache.save(repo)
repo.stablesort.save(repo)