Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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
        )
Beispiel #4
0
    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
        )