Improve hacky post-error handling for #108

This commit is contained in:
Tulir Asokan
2018-04-15 17:45:28 +03:00
parent 423731751d
commit 2eba5f687a
+16 -6
View File
@@ -25,6 +25,8 @@ import logging
import re import re
import magic import magic
from sqlalchemy.exc import IntegrityError, InvalidRequestError
from sqlalchemy.orm.exc import FlushError
from telethon.tl.functions.messages import * from telethon.tl.functions.messages import *
from telethon.tl.functions.channels import * from telethon.tl.functions.channels import *
@@ -1160,12 +1162,20 @@ class Portal:
return return
self.log.debug("Handled Telegram message: %s", evt) self.log.debug("Handled Telegram message: %s", evt)
DBMessage.query \ try:
.filter(DBMessage.mx_room == self.mxid, self.db.add(DBMessage(tgid=evt.id, mx_room=self.mxid, mxid=mxid, tg_space=tg_space))
DBMessage.mxid == temporary_identifier) \ self.db.commit()
.update({"mxid": mxid}) DBMessage.query \
self.db.add(DBMessage(tgid=evt.id, mx_room=self.mxid, mxid=mxid, tg_space=tg_space)) .filter(DBMessage.mx_room == self.mxid,
self.db.commit() DBMessage.mxid == temporary_identifier) \
.update({"mxid": mxid})
except FlushError as e:
self.log.exception(f"{e.__class__.__name__} while saving message mapping.")
await intent.redact(self.mxid, mxid)
except (IntegrityError, InvalidRequestError) as e:
self.log.exception(f"{e.__class__.__name__} while saving message mapping.")
self.db.rollback()
await intent.redact(self.mxid, mxid)
async def _create_room_on_action(self, source, action): async def _create_room_on_action(self, source, action):
create_and_exit = (MessageActionChatCreate, MessageActionChannelCreate) create_and_exit = (MessageActionChatCreate, MessageActionChannelCreate)