Skip to content

Commit 7b472ee

Browse files
committed
fix: shorter DB sessions in GET /api/v0/messages.json
1 parent 1c70b1e commit 7b472ee

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/aleph/services/cache/node_cache.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import aleph.toolkit.json as aleph_json
77
from aleph.db.accessors.messages import count_matching_messages
88
from aleph.schemas.messages_query_params import MessageQueryParams
9-
from aleph.types.db_session import DbSession
9+
from aleph.types.db_session import DbSessionFactory
1010

1111
CacheKey = Any
1212
CacheValue = bytes
@@ -96,7 +96,7 @@ def _message_filter_id(filters: Dict[str, Any]):
9696
return sha256(filters_json).hexdigest()
9797

9898
async def count_messages(
99-
self, session: DbSession, query_params: MessageQueryParams
99+
self, session_factory: DbSessionFactory, query_params: MessageQueryParams
100100
) -> int:
101101
filters = query_params.model_dump(exclude_none=True)
102102
cache_key = f"message_count:{self._message_filter_id(filters)}"
@@ -106,7 +106,8 @@ async def count_messages(
106106
return int(cached_result.decode())
107107

108108
# Slow, can take a few seconds
109-
n_matches = count_matching_messages(session, **filters)
109+
with session_factory() as session:
110+
n_matches = count_matching_messages(session, **filters)
110111

111112
await self.set(cache_key, n_matches, expiration=self.message_cache_count_ttl)
112113

src/aleph/web/controllers/messages.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,15 @@ async def view_messages_list(request: web.Request) -> web.Response:
243243
include_confirmations=True, **find_filters
244244
)
245245
messages = (session.execute(messages_query)).scalars()
246-
total_msgs = await node_cache.count_messages(session, query_params)
247246

248-
return format_response(
249-
messages,
250-
pagination=pagination_per_page,
251-
page=pagination_page,
252-
total_messages=total_msgs,
253-
)
247+
total_msgs = await node_cache.count_messages(session_factory, query_params)
248+
249+
return format_response(
250+
messages,
251+
pagination=pagination_per_page,
252+
page=pagination_page,
253+
total_messages=total_msgs,
254+
)
254255

255256

256257
async def _send_history_to_ws(

0 commit comments

Comments
 (0)