@@ -2022,25 +2022,6 @@ def get_next_event_to_expire_txn(
20222022 desc = "get_next_event_to_expire" , func = get_next_event_to_expire_txn
20232023 )
20242024
2025- async def get_event_id_from_transaction_id_and_token_id (
2026- self , room_id : str , user_id : str , token_id : int , txn_id : str
2027- ) -> Optional [str ]:
2028- """Look up if we have already persisted an event for the transaction ID,
2029- returning the event ID if so.
2030- """
2031- return await self .db_pool .simple_select_one_onecol (
2032- table = "event_txn_id" ,
2033- keyvalues = {
2034- "room_id" : room_id ,
2035- "user_id" : user_id ,
2036- "token_id" : token_id ,
2037- "txn_id" : txn_id ,
2038- },
2039- retcol = "event_id" ,
2040- allow_none = True ,
2041- desc = "get_event_id_from_transaction_id_and_token_id" ,
2042- )
2043-
20442025 async def get_event_id_from_transaction_id_and_device_id (
20452026 self , room_id : str , user_id : str , device_id : str , txn_id : str
20462027 ) -> Optional [str ]:
@@ -2072,29 +2053,35 @@ async def get_already_persisted_events(
20722053 """
20732054
20742055 mapping = {}
2075- txn_id_to_event : Dict [Tuple [str , int , str ], str ] = {}
2056+ txn_id_to_event : Dict [Tuple [str , str , str , str ], str ] = {}
20762057
20772058 for event in events :
2078- token_id = getattr (event .internal_metadata , "token_id " , None )
2059+ device_id = getattr (event .internal_metadata , "device_id " , None )
20792060 txn_id = getattr (event .internal_metadata , "txn_id" , None )
20802061
2081- if token_id and txn_id :
2062+ if device_id and txn_id :
20822063 # Check if this is a duplicate of an event in the given events.
2083- existing = txn_id_to_event .get ((event .room_id , token_id , txn_id ))
2064+ existing = txn_id_to_event .get (
2065+ (event .room_id , event .sender , device_id , txn_id )
2066+ )
20842067 if existing :
20852068 mapping [event .event_id ] = existing
20862069 continue
20872070
20882071 # Check if this is a duplicate of an event we've already
20892072 # persisted.
2090- existing = await self .get_event_id_from_transaction_id_and_token_id (
2091- event .room_id , event .sender , token_id , txn_id
2073+ existing = await self .get_event_id_from_transaction_id_and_device_id (
2074+ event .room_id , event .sender , device_id , txn_id
20922075 )
20932076 if existing :
20942077 mapping [event .event_id ] = existing
2095- txn_id_to_event [(event .room_id , token_id , txn_id )] = existing
2078+ txn_id_to_event [
2079+ (event .room_id , event .sender , device_id , txn_id )
2080+ ] = existing
20962081 else :
2097- txn_id_to_event [(event .room_id , token_id , txn_id )] = event .event_id
2082+ txn_id_to_event [
2083+ (event .room_id , event .sender , device_id , txn_id )
2084+ ] = event .event_id
20982085
20992086 return mapping
21002087
0 commit comments