summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
Diffstat (limited to 'synapse')
-rw-r--r--synapse/storage/search.py28
1 files changed, 10 insertions, 18 deletions
diff --git a/synapse/storage/search.py b/synapse/storage/search.py
index 8d294d497b..2755acff40 100644
--- a/synapse/storage/search.py
+++ b/synapse/storage/search.py
@@ -16,7 +16,6 @@
 from collections import namedtuple
 import logging
 import re
-import sys
 import ujson as json
 
 from twisted.internet import defer
@@ -335,25 +334,18 @@ class SearchStore(BackgroundUpdateStore):
             # (postgres 9.5 uses the separate gin_pending_list_limit setting,
             # so doesn't suffer the same problem, but changing work_mem will
             # be harmless)
+            #
+            # Note that we don't need to worry about restoring it on
+            # exception, because exceptions will cause the transaction to be
+            # rolled back, including the effects of the SET command.
+            #
+            # Also: we use SET rather than SET LOCAL because there's lots of
+            # other stuff going on in this transaction, which want to have the
+            # normal work_mem setting.
 
             txn.execute("SET work_mem='256kB'")
-            try:
-                txn.executemany(sql, args)
-            except Exception:
-                # we need to reset work_mem, but doing so may throw a new
-                # exception and we want to preserve the original
-                t, v, tb = sys.exc_info()
-                try:
-                    txn.execute("RESET work_mem")
-                except Exception as e:
-                    logger.warn(
-                        "exception resetting work_mem during exception "
-                        "handling: %r",
-                        e,
-                    )
-                raise t, v, tb
-            else:
-                txn.execute("RESET work_mem")
+            txn.executemany(sql, args)
+            txn.execute("RESET work_mem")
 
         elif isinstance(self.database_engine, Sqlite3Engine):
             sql = (