telegram icon indicating copy to clipboard operation
telegram copied to clipboard

UniqueViolationError leads to messages being redacted immediately on Matrix

Open davidmehren opened this issue 3 years ago • 0 comments

I'm running v0.11.2 of this bridge in Docker. Today, I noticed that messages from Telegram are being bridged to Matrix, but then are immediately redacted. Checking the logs, I found multiple appearances of errors like this

Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]: [[email protected]] UniqueViolationError while saving message mapping. This might mean that an update was handled after it left the dedup cache queue. You can try enabling bridge.deduplicat
ion.pre_db_check in the config.                                                                                                 
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]: Traceback (most recent call last):
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/mautrix_telegram/portal.py", line 3180, in handle_telegram_message
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     await dbm.insert()
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/mautrix_telegram/db/message.py", line 168, in insert
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     await self.db.execute(q, *self._values)                                        
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/mautrix/util/async_db/database.py", line 96, in execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     return await conn.execute(query, *args, timeout=timeout)
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/mautrix/util/async_db/connection.py", line 35, in wrapper
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     ret = await func(self, arg, *args, **kwargs)
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/mautrix/util/async_db/connection.py", line 68, in execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     return await self.wrapped.execute(query, *args, timeout=timeout)
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/asyncpg/connection.py", line 320, in execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     _, status, _ = await self._execute(
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/asyncpg/connection.py", line 1659, in _execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     result, _ = await self.__execute(
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/asyncpg/connection.py", line 1684, in __execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     return await self._do_execute(
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "/usr/lib/python3.9/site-packages/asyncpg/connection.py", line 1731, in _do_execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:     result = await executor(stmt, None)
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]:   File "asyncpg/protocol/protocol.pyx", line 201, in bind_execute
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]: asyncpg.exceptions.UniqueViolationError: duplicate key value violates unique constraint "_message_temp_pkey"
Apr 11 14:20:48 matrix matrix-mautrix-telegram[2587868]: DETAIL:  Key (tgid, tg_space, edit_index)=(1846, 1225320943, 0) already exists.

The config option from the error message seems to have been removed in https://github.com/mautrix/telegram/commit/d108ac5d949f06575301658218cb35295e9878b9, so I'm a bit confused. What does the error mean, and how can I ensure that Telegram messages are properly bridged?

davidmehren avatar Apr 11 '22 12:04 davidmehren