summary refs log tree commit diff
path: root/tests/storage/databases
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2023-08-17 14:07:57 +0100
committerGitHub <noreply@github.com>2023-08-17 14:07:57 +0100
commiteb0dbab15b119eab7721bc03ac1cfc7f6b638bb3 (patch)
tree5935d694cd4af3b5833a8b6f39b982ebd8d437ec /tests/storage/databases
parentOverride global statement timeout when creating indexes in Postgres (#16085) (diff)
downloadsynapse-eb0dbab15b119eab7721bc03ac1cfc7f6b638bb3.tar.xz
Fix database performance of read/write worker locks (#16061)
We were seeing serialization errors when taking out multiple read locks.

The transactions were retried, so isn't causing any failures.

Introduced in #15782.
Diffstat (limited to 'tests/storage/databases')
-rw-r--r--tests/storage/databases/main/test_lock.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/tests/storage/databases/main/test_lock.py b/tests/storage/databases/main/test_lock.py
index 383da83dfb..f541f1d6be 100644
--- a/tests/storage/databases/main/test_lock.py
+++ b/tests/storage/databases/main/test_lock.py
@@ -12,13 +12,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
 from twisted.internet import defer, reactor
 from twisted.internet.base import ReactorBase
 from twisted.internet.defer import Deferred
 from twisted.test.proto_helpers import MemoryReactor
 
 from synapse.server import HomeServer
-from synapse.storage.databases.main.lock import _LOCK_TIMEOUT_MS
+from synapse.storage.databases.main.lock import _LOCK_TIMEOUT_MS, _RENEWAL_INTERVAL_MS
 from synapse.util import Clock
 
 from tests import unittest
@@ -380,8 +381,8 @@ class ReadWriteLockTestCase(unittest.HomeserverTestCase):
         self.get_success(lock.__aenter__())
 
         # Wait for ages with the lock, we should not be able to get the lock.
-        self.reactor.advance(5 * _LOCK_TIMEOUT_MS / 1000)
-        self.pump()
+        for _ in range(0, 10):
+            self.reactor.advance((_RENEWAL_INTERVAL_MS / 1000))
 
         lock2 = self.get_success(
             self.store.try_acquire_read_write_lock("name", "key", write=True)