From fa4b54aca57bebc94e2b763abdae79343a08f969 Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Mon, 3 Jun 2019 17:06:54 +0100
Subject: [PATCH] Ignore room state with null bytes in for room stats

---
 synapse/storage/stats.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py
index 1c0b183a56..1f39ef211a 100644
--- a/synapse/storage/stats.py
+++ b/synapse/storage/stats.py
@@ -328,6 +328,21 @@ class StatsStore(StateDeltasStore):
             room_id (str)
             fields (dict[str:Any])
         """
+
+        # For whatever reason some of the fields may contain null bytes, which
+        # postgres isn't a fan of, so we replace those fields with null.
+        for col in (
+            "join_rules",
+            "history_visibility",
+            "encryption",
+            "name",
+            "topic",
+            "avatar",
+            "canonical_alias"
+        ):
+            if "\0" in fields.get(col, ""):
+                fields[col] = None
+
         return self._simple_upsert(
             table="room_state",
             keyvalues={"room_id": room_id},
-- 
GitLab