mirror of
https://github.com/matrix-org/sliding-sync.git
synced 2025-03-10 13:37:11 +00:00
Clean-up stale ack pos rows
or else we can't enforce non-null user ids in this table
This commit is contained in:
parent
1dd19b6ace
commit
a2d8900268
@ -23,7 +23,7 @@ func NewTransactionsTable(db *sqlx.DB) *TransactionsTable {
|
||||
// make sure tables are made
|
||||
db.MustExec(`
|
||||
CREATE TABLE IF NOT EXISTS syncv3_txns (
|
||||
user_id TEXT NOT NULL, -- was actually device_id before migration
|
||||
user_id TEXT NOT NULL,
|
||||
device_id TEXT NOT NULL,
|
||||
event_id TEXT NOT NULL,
|
||||
txn_id TEXT NOT NULL,
|
||||
|
@ -306,9 +306,31 @@ func exec(txn *sqlx.Tx, query string, checkRowsAffected func(ra int64) bool, arg
|
||||
|
||||
func expectOneRowAffected(ra int64) bool { return ra == 1 }
|
||||
func expectAnyNumberOfRowsAffected(ra int64) bool { return true }
|
||||
func logRowsAffected(msg string) func(ra int64) bool {
|
||||
return func(ra int64) bool {
|
||||
logger.Info().Msgf(msg, ra)
|
||||
return true
|
||||
}
|
||||
}
|
||||
func expectAtMostOneRowAffected(ra int64) bool { return ra == 0 || ra == 1 }
|
||||
|
||||
func finish(txn *sqlx.Tx) (err error) {
|
||||
// OnExpiredToken used to delete from the to-device table, but not from the
|
||||
// to-device ack pos table. Fix this up by deleting any orphaned ack pos rows.
|
||||
err = exec(
|
||||
txn,
|
||||
`
|
||||
DELETE FROM syncv3_to_device_ack_pos
|
||||
WHERE device_id IN (
|
||||
SELECT syncv3_to_device_ack_pos.device_id
|
||||
FROM syncv3_to_device_ack_pos LEFT JOIN syncv3_sync2_devices USING (device_id)
|
||||
);`,
|
||||
logRowsAffected("Deleted %d stale rows from syncv3_to_device_ack_pos"),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = txn.Exec(`
|
||||
ALTER TABLE syncv3_sync2_devices
|
||||
DROP COLUMN v2_token_encrypted,
|
||||
|
Loading…
x
Reference in New Issue
Block a user