Closed phijor closed 3 years ago
Sep 16 09:57:34 metricq metricq-grafana[35050]: 2021-09-16 09:57:34,841 [ERROR ] [aiohttp.server ] Error handling request
Sep 16 09:57:34 metricq metricq-grafana[35050]: Traceback (most recent call last):
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
Sep 16 09:57:34 metricq metricq-grafana[35050]: resp = await self._request_handler(request)
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle
Sep 16 09:57:34 metricq metricq-grafana[35050]: resp = await handler(request)
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/metricq_grafana/views.py", line 25, in query
Sep 16 09:57:34 metricq metricq-grafana[35050]: resp = await get_history_data(request.app, req_json)
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/metricq_grafana/amqp.py", line 44, in get_history_data
Sep 16 09:57:34 metricq metricq-grafana[35050]: results = await asyncio.gather(
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/metricq_grafana/target.py", line 47, in get_response
Sep 16 09:57:34 metricq metricq-grafana[35050]: ((data, time_delta_ns), metadata) = await asyncio.gather(
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/metricq_grafana/target.py", line 75, in _get_data
Sep 16 09:57:34 metricq metricq-grafana[35050]: data = await app["history_client"].history_data_request(
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/metricq/history_client.py", line 433, in history_data_request
Sep 16 09:57:34 metricq metricq-grafana[35050]: await self.history_exchange.publish(msg, routing_key=metric)
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/aio_pika/exchange.py", line 233, in publish
Sep 16 09:57:34 metricq metricq-grafana[35050]: return await asyncio.wait_for(
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/usr/local/lib/python3.9/asyncio/tasks.py", line 442, in wait_for
Sep 16 09:57:34 metricq metricq-grafana[35050]: return await fut
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/aiormq/channel.py", line 508, in basic_publish
Sep 16 09:57:34 metricq metricq-grafana[35050]: async with self.lock:
Sep 16 09:57:34 metricq metricq-grafana[35050]: File "/opt/metricq-grafana/lib/python3.9/site-packages/aiormq/channel.py", line 90, in lock
Sep 16 09:57:34 metricq metricq-grafana[35050]: raise ChannelInvalidStateError("%r closed" % self)
Sep 16 09:57:34 metricq metricq-grafana[35050]: aiormq.exceptions.ChannelInvalidStateError: <Channel: "1"> closed
We should make sure that every channel operation of a
HistoryClient
handles channel errors (ChannelInvalidStateError
,ChannelLockedResource
), like other clients do:https://github.com/metricq/metricq-python/blob/2f1775cbc63577cfc7d78f55efac631da8bbc789/metricq/agent.py#L367-L374
We then might raise our own (more descriptive and documented) exceptions and let application code handle that.