Internal server error
+ Exception Group Traceback (most recent call last):
| File "/app/meshview/web.py", line 300, in packet_list
| async with asyncio.TaskGroup() as tg:
| ^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.12/asyncio/taskgroups.py", line 71, in __aexit__
| return await self._aexit(et, exc)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.12/asyncio/taskgroups.py", line 164, in _aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (5 sub-exceptions)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/app/meshview/store.py", line 10, in get_node
| result = await session.execute(select(Node).where(Node.node_id == node_id))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 463, in execute
| result = await greenlet_spawn(
| ^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
| result = context.throw(*sys.exc_info())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
| return self._execute_internal(
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2241, in _execute_internal
| conn = self._connection_for_bind(bind)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2110, in _connection_for_bind
| return trans._connection_for_bind(engine, execution_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<string>", line 2, in _connection_for_bind
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
| ret_value = fn(self, *arg, **kw)
| ^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
| conn = bind.connect()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3277, in connect
| return self._connection_cls(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 143, in __init__
| self._dbapi_connection = engine.raw_connection()
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3301, in raw_connection
| return self.pool.connect()
| ^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 447, in connect
| return _ConnectionFairy._checkout(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
| fairy = _ConnectionRecord.checkout(pool)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 711, in checkout
| rec = pool._do_get()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 166, in _do_get
| raise exc.TimeoutError(
| sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)
+---------------- 2 ----------------
| Traceback (most recent call last):
| File "/app/meshview/store.py", line 45, in get_packets
| result = await session.execute(q)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 463, in execute
| result = await greenlet_spawn(
| ^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
| result = context.throw(*sys.exc_info())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
| return self._execute_internal(
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2241, in _execute_internal
| conn = self._connection_for_bind(bind)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2110, in _connection_for_bind
| return trans._connection_for_bind(engine, execution_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<string>", line 2, in _connection_for_bind
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
| ret_value = fn(self, *arg, **kw)
| ^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
| conn = bind.connect()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3277, in connect
| return self._connection_cls(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 143, in __init__
| self._dbapi_connection = engine.raw_connection()
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3301, in raw_connection
| return self.pool.connect()
| ^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 447, in connect
| return _ConnectionFairy._checkout(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
| fairy = _ConnectionRecord.checkout(pool)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 711, in checkout
| rec = pool._do_get()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 166, in _do_get
| raise exc.TimeoutError(
| sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)
+---------------- 3 ----------------
| Traceback (most recent call last):
| File "/app/meshview/web.py", line 116, in build_trace
| for raw_p in await store.get_packets_from(node_id, PortNum.POSITION_APP, since=datetime.timedelta(hours=24)):
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/app/meshview/store.py", line 63, in get_packets_from
| result = await session.execute(q.limit(limit).order_by(Packet.import_time.desc()))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 463, in execute
| result = await greenlet_spawn(
| ^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
| result = context.throw(*sys.exc_info())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
| return self._execute_internal(
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2241, in _execute_internal
| conn = self._connection_for_bind(bind)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2110, in _connection_for_bind
| return trans._connection_for_bind(engine, execution_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<string>", line 2, in _connection_for_bind
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
| ret_value = fn(self, *arg, **kw)
| ^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
| conn = bind.connect()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3277, in connect
| return self._connection_cls(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 143, in __init__
| self._dbapi_connection = engine.raw_connection()
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3301, in raw_connection
| return self.pool.connect()
| ^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 447, in connect
| return _ConnectionFairy._checkout(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
| fairy = _ConnectionRecord.checkout(pool)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 711, in checkout
| rec = pool._do_get()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 166, in _do_get
| raise exc.TimeoutError(
| sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)
+---------------- 4 ----------------
| Traceback (most recent call last):
| File "/app/meshview/web.py", line 134, in build_neighbors
| packets = await store.get_packets_from(node_id, PortNum.NEIGHBORINFO_APP, limit=1)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/app/meshview/store.py", line 63, in get_packets_from
| result = await session.execute(q.limit(limit).order_by(Packet.import_time.desc()))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 463, in execute
| result = await greenlet_spawn(
| ^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
| result = context.throw(*sys.exc_info())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
| return self._execute_internal(
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2241, in _execute_internal
| conn = self._connection_for_bind(bind)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2110, in _connection_for_bind
| return trans._connection_for_bind(engine, execution_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<string>", line 2, in _connection_for_bind
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
| ret_value = fn(self, *arg, **kw)
| ^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
| conn = bind.connect()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3277, in connect
| return self._connection_cls(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 143, in __init__
| self._dbapi_connection = engine.raw_connection()
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3301, in raw_connection
| return self.pool.connect()
| ^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 447, in connect
| return _ConnectionFairy._checkout(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
| fairy = _ConnectionRecord.checkout(pool)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 711, in checkout
| rec = pool._do_get()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 166, in _do_get
| raise exc.TimeoutError(
| sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)
+---------------- 5 ----------------
| Traceback (most recent call last):
| File "/app/meshview/store.py", line 96, in has_packets
| (await session.execute(
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 463, in execute
| result = await greenlet_spawn(
| ^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
| result = context.throw(*sys.exc_info())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
| return self._execute_internal(
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2241, in _execute_internal
| conn = self._connection_for_bind(bind)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2110, in _connection_for_bind
| return trans._connection_for_bind(engine, execution_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<string>", line 2, in _connection_for_bind
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
| ret_value = fn(self, *arg, **kw)
| ^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
| conn = bind.connect()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3277, in connect
| return self._connection_cls(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 143, in __init__
| self._dbapi_connection = engine.raw_connection()
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3301, in raw_connection
| return self.pool.connect()
| ^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 447, in connect
| return _ConnectionFairy._checkout(self)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
| fairy = _ConnectionRecord.checkout(pool)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 711, in checkout
| rec = pool._do_get()
| ^^^^^^^^^^^^^^
| File "/env/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 166, in _do_get
| raise exc.TimeoutError(
| sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)
+------------------------------------