MatrixSynapse/synapse
Erik Johnston c4fa4f37cb
Fix perf of fetching the same events many times. ()
The code to deduplicate repeated fetches of the same set of events was
N^2 (over the number of events requested), which could lead to a process
being completely wedged.

The main fix is to deduplicate the returned deferreds so we only await
on a deferred once rather than many times. Seperately, when handling the
returned events from the defrered we only add the events we care about
to the event map to be returned (so that we don't pay the price of
inserting extraneous events into the dict).
2021-08-27 09:15:50 +00:00
..
_scripts
api
app
appservice
config
crypto
events Validate new m.room.power_levels events () 2021-08-26 17:07:58 +01:00
federation Split `FederationHandler` in half () 2021-08-26 21:41:44 +01:00
groups
handlers Split `FederationHandler` in half () 2021-08-26 21:41:44 +01:00
http
logging
metrics
module_api
push
replication Split `FederationHandler` in half () 2021-08-26 21:41:44 +01:00
res/templates
rest Additional type hints for REST servlets (part 2). () 2021-08-26 11:53:52 +00:00
server_notices Use inline type hints in various other places (in `synapse/`) () 2021-07-15 11:02:43 +01:00
spam_checker_api
state
static
storage Fix perf of fetching the same events many times. () 2021-08-27 09:15:50 +00:00
streams
util
__init__.py
event_auth.py
notifier.py
python_dependencies.py Validate new m.room.power_levels events () 2021-08-26 17:07:58 +01:00
server.py Split `FederationHandler` in half () 2021-08-26 21:41:44 +01:00
types.py
visibility.py