# HG changeset patch # User Pierre-Yves David # Date 1535322499 -7200 # Node ID d85556dd18b5e862ff2dd16a863a577c49cc1a20 # Parent e47cdbb48ac7e694cd155a59133c6a0225eedc19 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. diff -r e47cdbb48ac7 -r d85556dd18b5 hgext3rd/evolve/obsdiscovery.py --- 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 @@ -573,6 +573,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): diff -r e47cdbb48ac7 -r d85556dd18b5 hgext3rd/evolve/stablerangecache.py --- 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 @@ -222,6 +222,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)