diff --git a/synapse/storage/util/sequence.py b/synapse/storage/util/sequence.py index 5bee3cf34f..18d3cbeafe 100644 --- a/synapse/storage/util/sequence.py +++ b/synapse/storage/util/sequence.py @@ -184,6 +184,16 @@ class PostgresSequenceGenerator(SequenceGenerator): """ txn.execute(sql) + # Since we just auto-repaired, update `last_value` with the new value + # (otherwise we'd make stale comparisons below) + # + # `setval` returns the value the sequence was set to, and marks the sequence + # as `is_called` (i.e. the next `nextval` will return a value strictly + # greater than it), so this is now the true "last value". + row = txn.fetchone() + assert row is not None + (last_value,) = row + txn.close() # If we have values in the stream positions table then they have to be