Catch individual errors when syncing dialogs
This commit is contained in:
@@ -334,6 +334,12 @@ class User(AbstractUser, BaseUser):
|
|||||||
|
|
||||||
return await self._search_remote(query), True
|
return await self._search_remote(query), True
|
||||||
|
|
||||||
|
async def _catch(self, action: str, task: asyncio.Task) -> None:
|
||||||
|
try:
|
||||||
|
await task
|
||||||
|
except Exception:
|
||||||
|
self.log.exception(f"Error while {action}")
|
||||||
|
|
||||||
async def sync_dialogs(self) -> None:
|
async def sync_dialogs(self) -> None:
|
||||||
if self.is_bot:
|
if self.is_bot:
|
||||||
return
|
return
|
||||||
@@ -361,11 +367,14 @@ class User(AbstractUser, BaseUser):
|
|||||||
if portal.mxid:
|
if portal.mxid:
|
||||||
update_task = portal.update_matrix_room(self, entity)
|
update_task = portal.update_matrix_room(self, entity)
|
||||||
backfill_task = portal.backfill(self, last_id=dialog.message.id)
|
backfill_task = portal.backfill(self, last_id=dialog.message.id)
|
||||||
creators.append(self.loop.create_task(update_task))
|
creators.append(self._catch(f"updating {portal.tgid_log}",
|
||||||
creators.append(self.loop.create_task(backfill_task))
|
self.loop.create_task(update_task)))
|
||||||
|
creators.append(self._catch(f"backfilling {portal.tgid_log}",
|
||||||
|
self.loop.create_task(backfill_task)))
|
||||||
elif not create_limit or index < create_limit:
|
elif not create_limit or index < create_limit:
|
||||||
create_task = portal.create_matrix_room(self, entity, invites=[self.mxid])
|
create_task = portal.create_matrix_room(self, entity, invites=[self.mxid])
|
||||||
creators.append(self.loop.create_task(create_task))
|
creators.append(self._catch(f"creating {portal.tgid_log}",
|
||||||
|
self.loop.create_task(create_task)))
|
||||||
index += 1
|
index += 1
|
||||||
await self.save(portals=True)
|
await self.save(portals=True)
|
||||||
await asyncio.gather(*creators)
|
await asyncio.gather(*creators)
|
||||||
|
|||||||
Reference in New Issue
Block a user