From d7d42387f5788ca31b1db6309cb30ff180b8a22c Mon Sep 17 00:00:00 2001
From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Date: Thu, 16 Apr 2020 14:37:06 +0100
Subject: [PATCH] Fix 'generator object is not subscriptable' error (#7290)

Some of the query functions return generators rather than lists, so we can't
index into the result. Happily we already have a copy of the results.

(think this was introduced in #7024)
---
 changelog.d/7290.misc                    | 1 +
 synapse/replication/tcp/streams/_base.py | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 changelog.d/7290.misc

diff --git a/changelog.d/7290.misc b/changelog.d/7290.misc
new file mode 100644
index 0000000000..676f285377
--- /dev/null
+++ b/changelog.d/7290.misc
@@ -0,0 +1 @@
+Move catchup of replication streams logic to worker.
diff --git a/synapse/replication/tcp/streams/_base.py b/synapse/replication/tcp/streams/_base.py
index f56a0fd4b5..0d3f050776 100644
--- a/synapse/replication/tcp/streams/_base.py
+++ b/synapse/replication/tcp/streams/_base.py
@@ -148,8 +148,9 @@ def db_query_to_update_function(
         updates = [(row[0], row[1:]) for row in rows]
         limited = False
         if len(updates) == limit:
-            upto_token = rows[-1][0]
+            upto_token = updates[-1][0]
             limited = True
+        assert len(updates) <= limit
 
         return updates, upto_token, limited
 
-- 
GitLab