From 4083131f77f508462449c4c5d2983fb32e2e8522 Mon Sep 17 00:00:00 2001 From: Olivier Desenfans Date: Tue, 25 Apr 2023 17:36:27 +0200 Subject: [PATCH] Fix: ignore trusted messages for on-chain sync Problem: trusted messages were included in the results of `get_unconfirmed_messages` when confirming messages on-chain. Solution: remove trusted messages from the query. --- src/aleph/db/accessors/messages.py | 2 +- tests/db/test_messages.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/aleph/db/accessors/messages.py b/src/aleph/db/accessors/messages.py index b474cb0b1..dc1c351ea 100644 --- a/src/aleph/db/accessors/messages.py +++ b/src/aleph/db/accessors/messages.py @@ -250,7 +250,7 @@ def get_unconfirmed_messages( ) select_stmt = select(MessageDb).where( - ~select_message_confirmations.exists() + MessageDb.signature.isnot(None) & (~select_message_confirmations.exists()) ) return (session.execute(select_stmt.limit(limit))).scalars() diff --git a/tests/db/test_messages.py b/tests/db/test_messages.py index 474cb2b4b..123584303 100644 --- a/tests/db/test_messages.py +++ b/tests/db/test_messages.py @@ -318,6 +318,18 @@ async def test_get_unconfirmed_messages( assert unconfirmed_messages == [] +@pytest.mark.asyncio +async def test_get_unconfirmed_messages_trusted_messages(session_factory:DbSessionFactory, fixture_message: MessageDb): + fixture_message.signature = None + with session_factory() as session: + session.add(fixture_message) + session.commit() + + with session_factory() as session: + unconfirmed_messages = list(get_unconfirmed_messages(session)) + assert unconfirmed_messages == [] + + @pytest.mark.asyncio async def test_get_distinct_channels( session_factory: DbSessionFactory, fixture_message: MessageDb