- Aug 10, 2018
-
-
black authored
-
Amber Brown authored
-
- Jul 27, 2018
-
-
Richard van der Hoff authored
-
Richard van der Hoff authored
Because it was complicated and annoyed me. I suspect this will be more efficient too.
-
- Jul 20, 2018
-
-
Richard van der Hoff authored
-
Richard van der Hoff authored
Linearizer was effectively a Limiter with max_count=1, so rather than maintaining two sets of code, let's combine them.
-
Richard van der Hoff authored
Fixes #3570
-
- Jul 17, 2018
-
-
Erik Johnston authored
-
- Jul 13, 2018
-
-
Erik Johnston authored
-
- Jul 09, 2018
-
-
Amber Brown authored
-
- Jul 04, 2018
-
-
Richard van der Hoff authored
a61738b3 removed a call to run_on_reactor from a unit test, but that call was doing something useful, in making the function in question asynchronous. Reinstate the call and add a check that we are testing what we wanted to be testing.
-
- Jun 22, 2018
-
-
Richard van der Hoff authored
When _get_state_for_groups is given a wildcard filter, just do a complete lookup. Hopefully this will give us the best of both worlds by not filling up the ram if we only need one or two keys, but also making the cache still work for the federation reader usecase.
-
Amber Brown authored
-
- Jun 14, 2018
-
-
Amber Brown authored
-
- Jun 05, 2018
-
-
Amber Brown authored
-
- May 29, 2018
-
-
Matthew Hodgson authored
-
- May 02, 2018
-
-
Richard van der Hoff authored
-
Richard van der Hoff authored
So, it turns out that if you have a first `Deferred` `D1`, you can add a callback which returns another `Deferred` `D2`, and `D2` must then complete before any further callbacks on `D1` will execute (and later callbacks on `D1` get the *result* of `D2` rather than `D2` itself). So, `D1` might have `called=True` (as in, it has started running its callbacks), but any new callbacks added to `D1` won't get run until `D2` completes - so if you `yield D1` in an `inlineCallbacks` function, your `yield` will 'block'. In conclusion: some of our assumptions in `logcontext` were invalid. We need to make sure that we don't optimise out the logcontext juggling when this situation happens. Fortunately, it is easy to detect by checking `D1.paused`.
-
Richard van der Hoff authored
This was introduced in 4f2f5171
-
- Apr 22, 2018
-
-
Richard van der Hoff authored
This doesn't feel like a wheel we need to reinvent.
-
- Apr 15, 2018
-
-
Adrian Tschira authored
This is a mixed commit that fixes various small issues * print parentheses * 01 is invalid syntax (it was octal in py2) * [x for i in 1, 2] is invalid syntax * six moves Signed-off-by:
Adrian Tschira <nota@notafile.com>
-
- Apr 05, 2018
-
-
Richard van der Hoff authored
Fixes an issue where a cache invalidation would invalidate *all* pending entries, rather than just the entry that we intended to invalidate.
-
- Jan 18, 2018
-
-
Erik Johnston authored
-
- Jan 17, 2018
-
-
Erik Johnston authored
Twisted core doesn't have a general purpose one, so we need to write one ourselves. Features: - All writing happens in background thread - Supports both push and pull producers - Push producers get paused if the consumer falls behind
-
- Jan 16, 2018
-
-
Richard van der Hoff authored
It turns out that the only thing we use the __dict__ of LoggingContext for is `request`, and given we create lots of LoggingContexts and then copy them every time we do a db transaction or log line, using the __dict__ seems a bit redundant. Let's try to optimise things by making the request attribute explicit.
-
- Oct 17, 2017
-
-
Richard van der Hoff authored
The file under test is logcontext.py, not log_context.py
-
Richard van der Hoff authored
-
- Oct 11, 2017
-
-
Richard van der Hoff authored
1. make it not blow out the stack when there are more than 50 things waiting for a lock. Fixes https://github.com/matrix-org/synapse/issues/2505. 2. Make it not mess up the log contexts.
-
- May 17, 2017
-
-
Erik Johnston authored
Most of the time was spent copying a dict to filter out sentinel values that indicated that keys did not exist in the dict. The sentinel values were added to ensure that we cached the non-existence of keys. By updating DictionaryCache to keep track of which keys were known to not exist itself we can remove a dictionary copy.
-
- Mar 30, 2017
-
-
Erik Johnston authored
-
Richard van der Hoff authored
The cache wrappers had a habit of leaking the logcontext into the reactor while the lookup function was running, and then not restoring it correctly when the lookup function had completed. It's all the fault of `preserve_context_over_{fn,deferred}` which are basically a bit broken.
-
- Mar 23, 2017
-
-
Richard van der Hoff authored
Due to a failure to instantiate DeferredTimedOutError, time_bound_deferred would throw a CancelledError when the deferred timed out, which was rather confusing.
-
- Mar 22, 2017
-
-
Richard van der Hoff authored
The `@cached` decorator on `KeyStore._get_server_verify_key` was missing its `num_args` parameter, which meant that it was returning the wrong key for any server which had more than one recorded key. By way of a fix, change the default for `num_args` to be *all* arguments. To implement that, factor out a common base class for `CacheDescriptor` and `CacheListDescriptor`.
-
- Mar 18, 2017
-
-
Richard van der Hoff authored
Fix a bug in ``logcontext.preserve_fn`` which made it leak context into the reactor, and add a test for it. Also, get rid of ``logcontext.reset_context_after_deferred``, which tried to do the same thing but had its own, different, set of bugs.
-
- Jan 17, 2017
-
-
Erik Johnston authored
-
Erik Johnston authored
Instead of calculating the size of the cache repeatedly, which can take a long time now that it can use a callback, instead cache the size and update that on insertion and deletion. This requires changing the cache descriptors to have two caches, one for pending deferreds and the other for the actual values. There's no reason to evict from the pending deferreds as they won't take up any more memory.
-
- Jan 16, 2017
-
-
Erik Johnston authored
-
- Jan 13, 2017
-
-
Erik Johnston authored
-
- Nov 10, 2016
-
-
Erik Johnston authored
-
- Aug 19, 2016
-
-
Erik Johnston authored
-