Drop backwards-compatibility support for "outlier" (#10903)

Before Synapse 1.31 (#9411), we relied on `outlier` being stored in the
`internal_metadata` column. We can now assume nobody will roll back their
deployment that far and drop the legacy support.
This commit is contained in:
Richard van der Hoff 2021-09-28 15:25:36 +01:00 committed by GitHub
parent 2622b28c5c
commit 8aaa4b7b5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 25 deletions

1
changelog.d/10903.misc Normal file
View file

@ -0,0 +1 @@
Drop old functionality which maintained database compatibility with Synapse versions before 1.31.

View file

@ -1276,13 +1276,6 @@ class PersistEventsStore:
logger.exception("") logger.exception("")
raise raise
# update the stored internal_metadata to update the "outlier" flag.
# TODO: This is unused as of Synapse 1.31. Remove it once we are happy
# to drop backwards-compatibility with 1.30.
metadata_json = json_encoder.encode(event.internal_metadata.get_dict())
sql = "UPDATE event_json SET internal_metadata = ? WHERE event_id = ?"
txn.execute(sql, (metadata_json, event.event_id))
# Add an entry to the ex_outlier_stream table to replicate the # Add an entry to the ex_outlier_stream table to replicate the
# change in outlier status to our workers. # change in outlier status to our workers.
stream_order = event.internal_metadata.stream_ordering stream_order = event.internal_metadata.stream_ordering
@ -1327,19 +1320,6 @@ class PersistEventsStore:
d.pop("redacted_because", None) d.pop("redacted_because", None)
return d return d
def get_internal_metadata(event):
im = event.internal_metadata.get_dict()
# temporary hack for database compatibility with Synapse 1.30 and earlier:
# store the `outlier` flag inside the internal_metadata json as well as in
# the `events` table, so that if anyone rolls back to an older Synapse,
# things keep working. This can be removed once we are happy to drop support
# for that
if event.internal_metadata.is_outlier():
im["outlier"] = True
return im
self.db_pool.simple_insert_many_txn( self.db_pool.simple_insert_many_txn(
txn, txn,
table="event_json", table="event_json",
@ -1348,7 +1328,7 @@ class PersistEventsStore:
"event_id": event.event_id, "event_id": event.event_id,
"room_id": event.room_id, "room_id": event.room_id,
"internal_metadata": json_encoder.encode( "internal_metadata": json_encoder.encode(
get_internal_metadata(event) event.internal_metadata.get_dict()
), ),
"json": json_encoder.encode(event_dict(event)), "json": json_encoder.encode(event_dict(event)),
"format_version": event.format_version, "format_version": event.format_version,

View file

@ -12,9 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# When updating these values, please leave a short summary of the changes below. SCHEMA_VERSION = 64 # remember to update the list below when updating
SCHEMA_VERSION = 64
"""Represents the expectations made by the codebase about the database schema """Represents the expectations made by the codebase about the database schema
This should be incremented whenever the codebase changes its requirements on the This should be incremented whenever the codebase changes its requirements on the
@ -46,7 +44,7 @@ Changes in SCHEMA_VERSION = 64:
""" """
SCHEMA_COMPAT_VERSION = 59 SCHEMA_COMPAT_VERSION = 60 # 60: "outlier" not in internal_metadata.
"""Limit on how far the synapse codebase can be rolled back without breaking db compat """Limit on how far the synapse codebase can be rolled back without breaking db compat
This value is stored in the database, and checked on startup. If the value in the This value is stored in the database, and checked on startup. If the value in the