1 files changed, 4 insertions, 1 deletions
diff --git a/synapse/util/async_helpers.py b/synapse/util/async_helpers.py
index 81320b8972..60c03a66fd 100644
--- a/synapse/util/async_helpers.py
+++ b/synapse/util/async_helpers.py
@@ -555,7 +555,10 @@ class ReadWriteLock:
finally:
with PreserveLoggingContext():
new_defer.callback(None)
- if self.key_to_current_writer[key] == new_defer:
+ # `self.key_to_current_writer[key]` may be missing if there was another
+ # writer waiting for us and it completed entirely within the
+ # `new_defer.callback()` call above.
+ if self.key_to_current_writer.get(key) == new_defer:
self.key_to_current_writer.pop(key)
return _ctx_manager()
|