diff options
-rw-r--r-- | changelog.d/10993.misc | 1 | ||||
-rw-r--r-- | synapse/util/async_helpers.py | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/changelog.d/10993.misc b/changelog.d/10993.misc new file mode 100644 index 0000000000..23c73dbac5 --- /dev/null +++ b/changelog.d/10993.misc @@ -0,0 +1 @@ +Fix a long-standing bug where `ReadWriteLock`s could drop logging contexts on exit. diff --git a/synapse/util/async_helpers.py b/synapse/util/async_helpers.py index 82d918a05f..5df80ea8e7 100644 --- a/synapse/util/async_helpers.py +++ b/synapse/util/async_helpers.py @@ -438,7 +438,8 @@ class ReadWriteLock: try: yield finally: - new_defer.callback(None) + with PreserveLoggingContext(): + new_defer.callback(None) self.key_to_current_readers.get(key, set()).discard(new_defer) return _ctx_manager() @@ -466,7 +467,8 @@ class ReadWriteLock: try: yield finally: - new_defer.callback(None) + with PreserveLoggingContext(): + new_defer.callback(None) if self.key_to_current_writer[key] == new_defer: self.key_to_current_writer.pop(key) |