Merge pull request #5324 from matrix-org/erikj/ignore_null

Ignore room state with null bytes in for room stats
pull/5347/head
Erik Johnston 2019-06-04 14:20:08 +01:00 committed by GitHub
commit d1d38081a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

1
changelog.d/5324.feature Normal file
View File

@ -0,0 +1 @@
Synapse now more efficiently collates room statistics.

View File

@ -328,6 +328,22 @@ class StatsStore(StateDeltasStore):
room_id (str) room_id (str)
fields (dict[str:Any]) 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"
):
field = fields.get(col)
if field and "\0" in field:
fields[col] = None
return self._simple_upsert( return self._simple_upsert(
table="room_state", table="room_state",
keyvalues={"room_id": room_id}, keyvalues={"room_id": room_id},