diff --git a/lbry/wallet/server/session.py b/lbry/wallet/server/session.py index 595ee56d5..daf8aa9f3 100644 --- a/lbry/wallet/server/session.py +++ b/lbry/wallet/server/session.py @@ -1003,9 +1003,20 @@ class LBRYElectrumX(SessionBase): self.session_mgr.executor_time_metric.observe(time.perf_counter() - start) async def run_and_cache_query(self, query_name, kwargs): + start = time.perf_counter() if isinstance(kwargs, dict): kwargs['release_time'] = format_release_time(kwargs.get('release_time')) - return await self.db.search_index.session_query(query_name, kwargs) + try: + self.session_mgr.pending_query_metric.inc() + return await self.db.search_index.session_query(query_name, kwargs) + except (TimeoutError, asyncio.TimeoutError) as error: + metrics = self.get_metrics_or_placeholder_for_api(query_name) + metrics.query_interrupt(start, error.metrics) + self.session_mgr.interrupt_count_metric.inc() + raise RPCError(JSONRPC.QUERY_TIMEOUT, 'query timed out') + finally: + self.session_mgr.pending_query_metric.dec() + self.session_mgr.executor_time_metric.observe(time.perf_counter() - start) async def mempool_compact_histogram(self): return self.mempool.compact_fee_histogram()