Avoid attempting to delete push actions for remote users. (#12879)

Remote users will never have push actions, so we can avoid a database
round-trip/transaction completely.
This commit is contained in:
Patrick Cloke 2022-05-26 07:09:16 -04:00 committed by GitHub
parent b83bc5fab5
commit b5707ceaba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 8 additions and 4 deletions

1
changelog.d/12879.misc Normal file
View File

@ -0,0 +1 @@
Avoid running queries which will never result in deletions.

View File

@ -223,7 +223,7 @@ class PerDestinationQueue:
"""Marks that the destination has new data to send, without starting a
new transaction.
If a transaction loop is already in progress then a new transcation will
If a transaction loop is already in progress then a new transaction will
be attempted when the current one finishes.
"""

View File

@ -938,7 +938,7 @@ class EventPushActionsWorkerStore(SQLBaseStore):
users can still get a list of recent highlights.
Args:
txn: The transcation
txn: The transaction
room_id: Room ID to delete from
user_id: user ID to delete for
stream_ordering: The lowest stream ordering which will

View File

@ -673,8 +673,11 @@ class ReceiptsWorkerStore(SQLBaseStore):
lock=False,
)
# When updating a local users read receipt, remove any push actions
# which resulted from the receipt's event and all earlier events.
if (
receipt_type in (ReceiptTypes.READ, ReceiptTypes.READ_PRIVATE)
self.hs.is_mine_id(user_id)
and receipt_type in (ReceiptTypes.READ, ReceiptTypes.READ_PRIVATE)
and stream_ordering is not None
):
self._remove_old_push_actions_before_txn( # type: ignore[attr-defined]

View File

@ -313,7 +313,7 @@ class EventsPersistenceStorage:
List of events persisted, the current position room stream position.
The list of events persisted may not be the same as those passed in
if they were deduplicated due to an event already existing that
matched the transcation ID; the existing event is returned in such
matched the transaction ID; the existing event is returned in such
a case.
"""
partitioned: Dict[str, List[Tuple[EventBase, EventContext]]] = {}