Merge pull request #2904 from matrix-org/erikj/receipt_cache_invalidation
Fix missing invalidations for receipt storage
This commit is contained in:
commit
3594dbc6dc
|
@ -53,6 +53,8 @@ class SlavedReceiptsStore(ReceiptsWorkerStore, BaseSlavedStore):
|
||||||
self.get_last_receipt_event_id_for_user.invalidate(
|
self.get_last_receipt_event_id_for_user.invalidate(
|
||||||
(user_id, room_id, receipt_type)
|
(user_id, room_id, receipt_type)
|
||||||
)
|
)
|
||||||
|
self._invalidate_get_users_with_receipts_in_room(room_id, receipt_type, user_id)
|
||||||
|
self.get_receipts_for_room.invalidate((room_id, receipt_type))
|
||||||
|
|
||||||
def process_replication_rows(self, stream_name, token, rows):
|
def process_replication_rows(self, stream_name, token, rows):
|
||||||
if stream_name == "receipts":
|
if stream_name == "receipts":
|
||||||
|
|
|
@ -292,20 +292,6 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
||||||
"get_all_updated_receipts", get_all_updated_receipts_txn
|
"get_all_updated_receipts", get_all_updated_receipts_txn
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ReceiptsStore(ReceiptsWorkerStore):
|
|
||||||
def __init__(self, db_conn, hs):
|
|
||||||
# We instantiate this first as the ReceiptsWorkerStore constructor
|
|
||||||
# needs to be able to call get_max_receipt_stream_id
|
|
||||||
self._receipts_id_gen = StreamIdGenerator(
|
|
||||||
db_conn, "receipts_linearized", "stream_id"
|
|
||||||
)
|
|
||||||
|
|
||||||
super(ReceiptsStore, self).__init__(db_conn, hs)
|
|
||||||
|
|
||||||
def get_max_receipt_stream_id(self):
|
|
||||||
return self._receipts_id_gen.get_current_token()
|
|
||||||
|
|
||||||
def _invalidate_get_users_with_receipts_in_room(self, room_id, receipt_type,
|
def _invalidate_get_users_with_receipts_in_room(self, room_id, receipt_type,
|
||||||
user_id):
|
user_id):
|
||||||
if receipt_type != "m.read":
|
if receipt_type != "m.read":
|
||||||
|
@ -326,6 +312,20 @@ class ReceiptsStore(ReceiptsWorkerStore):
|
||||||
|
|
||||||
self.get_users_with_read_receipts_in_room.invalidate((room_id,))
|
self.get_users_with_read_receipts_in_room.invalidate((room_id,))
|
||||||
|
|
||||||
|
|
||||||
|
class ReceiptsStore(ReceiptsWorkerStore):
|
||||||
|
def __init__(self, db_conn, hs):
|
||||||
|
# We instantiate this first as the ReceiptsWorkerStore constructor
|
||||||
|
# needs to be able to call get_max_receipt_stream_id
|
||||||
|
self._receipts_id_gen = StreamIdGenerator(
|
||||||
|
db_conn, "receipts_linearized", "stream_id"
|
||||||
|
)
|
||||||
|
|
||||||
|
super(ReceiptsStore, self).__init__(db_conn, hs)
|
||||||
|
|
||||||
|
def get_max_receipt_stream_id(self):
|
||||||
|
return self._receipts_id_gen.get_current_token()
|
||||||
|
|
||||||
def insert_linearized_receipt_txn(self, txn, room_id, receipt_type,
|
def insert_linearized_receipt_txn(self, txn, room_id, receipt_type,
|
||||||
user_id, event_id, data, stream_id):
|
user_id, event_id, data, stream_id):
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
|
|
Loading…
Reference in New Issue