fix: deduplicate indexed snapshots (#716)
Build Snapshot Release / build (push) Has been cancelled
Release Please / release-please (push) Has been cancelled
Test / test-nix (push) Has been cancelled
Test / test-win (push) Has been cancelled

This commit is contained in:
Gareth
2025-03-30 11:51:15 -07:00
committed by GitHub
parent 5b7e71ca7a
commit b3b1eefe9b
+24
View File
@@ -13,6 +13,7 @@ var migrations = []func(*OpLog) error{
migration002InstanceID,
migrationNoop,
migration002InstanceID, // re-run migration002InstanceID to fix improperly set instance IDs
migration003DeduplicateIndexedSnapshots,
}
var CurrentVersion = int64(len(migrations))
@@ -100,6 +101,29 @@ func migration002InstanceID(oplog *OpLog) error {
})
}
func migration003DeduplicateIndexedSnapshots(oplog *OpLog) error {
var snapshotIDs = make(map[string]struct{})
var deleteIDs []int64
if err := oplog.Query(SelectAll, func(op *v1.Operation) error {
if _, ok := op.Op.(*v1.Operation_OperationIndexSnapshot); ok {
if _, ok := snapshotIDs[op.SnapshotId]; ok {
deleteIDs = append(deleteIDs, op.Id)
} else {
snapshotIDs[op.SnapshotId] = struct{}{}
}
}
return nil
}); err != nil {
return err
}
if len(deleteIDs) == 0 {
return nil
}
_, err := oplog.store.Delete(deleteIDs...)
return err
}
// migrationNoop is a migration that does nothing; replaces deprecated migrations.
func migrationNoop(oplog *OpLog) error {
return nil