summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-08-15 13:45:26 +0100
committerErik Johnston <erik@matrix.org>2016-08-15 13:45:26 +0100
commit89e786bd85331b73204294e6066dc538f1c9869c (patch)
treeb12137f74605ccdb53a767f2acdcbaa290aece6a /synapse/storage
parentRename table. Add docs. (diff)
downloadsynapse-89e786bd85331b73204294e6066dc538f1c9869c.tar.xz
Doc get_next() context manager usage
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/_base.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index c55776994d..b0923a9cad 100644
--- a/synapse/storage/_base.py
+++ b/synapse/storage/_base.py
@@ -873,6 +873,10 @@ class SQLBaseStore(object):
         txn.call_after(cache_func.invalidate, keys)
 
         if isinstance(self.database_engine, PostgresEngine):
+            # get_next() returns a context manager which is designed to wrap
+            # the transaction. However, we want to only get an ID when we want
+            # to use it, here, so we need to call __enter__ manually, and have
+            # __exit__ called after the transaction finishes.
             ctx = self._cache_id_gen.get_next()
             stream_id = ctx.__enter__()
             txn.call_after(ctx.__exit__, None, None, None)