def get_keys(self, keys_to_fetch): """ Args: keys_to_fetch (dict[str, iterable[str]]): the keys to be fetched. server_name -> key_ids Returns: Deferred[dict[str, dict[str, synapse.storage.keys.FetchKeyResult|None]]]: map from server_name -> key_id -> FetchKeyResult """ results = {} @defer.inlineCallbacks def get_key(key_to_fetch_item): server_name, key_ids = key_to_fetch_item try: keys = yield self.get_server_verify_key_v2_direct( server_name, key_ids) results[server_name] = keys except KeyLookupError as e: logger.warning("Error looking up keys %s from %s: %s", key_ids, server_name, e) except Exception: logger.exception("Error getting keys %s from %s", key_ids, server_name) return yieldable_gather_results( get_key, keys_to_fetch.items()).addCallback(lambda _: results)
def test_dedupe(self): """Test that if we request the same event multiple times we only pull it out once. """ with LoggingContext("test") as ctx: d = yieldable_gather_results(self.store.get_event, [self.event_id, self.event_id]) self.get_success(d) # We should have fetched the event from the DB self.assertEqual(ctx.get_resource_usage().evt_db_fetch_count, 1)
def serialize_events(self, events, time_now, **kwargs): """Serializes multiple events. Args: event (iter[EventBase]) time_now (int): The current time in milliseconds **kwargs: Arguments to pass to `serialize_event` Returns: Deferred[list[dict]]: The list of serialized events """ return yieldable_gather_results( self.serialize_event, events, time_now=time_now, **kwargs )
def serialize_events(self, events, time_now, **kwargs): """Serializes multiple events. Args: event (iter[EventBase]) time_now (int): The current time in milliseconds **kwargs: Arguments to pass to `serialize_event` Returns: Deferred[list[dict]]: The list of serialized events """ return yieldable_gather_results( self.serialize_event, events, time_now=time_now, **kwargs )