[chore] add step-by-step logging to long migration (#3102)

This commit is contained in:
tobi 2024-07-15 11:12:56 +02:00 committed by GitHub
parent e2ed6ef024
commit 9adcce9494
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -31,6 +31,7 @@
func init() {
up := func(ctx context.Context, db *bun.DB) error {
log.Info(ctx, "migrating statuses and account settings to interaction policy model, please wait...")
log.Warn(ctx, "**WITH A LARGE DATABASE / LOWER SPEC MACHINE, THIS MIGRATION MAY TAKE A VERY LONG TIME (an hour or even longer); DO NOT INTERRUPT IT!**")
return db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error {
// Add new columns for interaction
@ -134,6 +135,7 @@ type spec struct {
args = append(args, bun.Safe(spec.defaultVal))
}
log.Infof(ctx, "adding column '%s' to '%s'...", spec.column, spec.table)
if _, err := tx.ExecContext(ctx, qStr, args...); err != nil {
return err
}
@ -143,6 +145,7 @@ type spec struct {
// with non-default old flags set.
oldStatuses := []oldmodel.Status{}
log.Info(ctx, "migrating existing statuses to new visibility model...")
if err := tx.
NewSelect().
Model(&oldStatuses).
@ -218,6 +221,7 @@ type spec struct {
"boostable",
}
for _, column := range oldColumns {
log.Infof(ctx, "dropping now-unused status column '%s'; this may take a while if you have lots of statuses in your database...", column)
if _, err := tx.
NewDropColumn().
Table("statuses").
@ -228,6 +232,7 @@ type spec struct {
}
// Add new indexes.
log.Info(ctx, "adding new index 'statuses_pending_approval_idx' to 'statuses'...")
if _, err := tx.
NewCreateIndex().
Table("statuses").
@ -238,6 +243,7 @@ type spec struct {
return err
}
log.Info(ctx, "adding new index 'status_faves_pending_approval_idx' to 'status_faves'...")
if _, err := tx.
NewCreateIndex().
Table("status_faves").
@ -248,6 +254,7 @@ type spec struct {
return err
}
log.Info(ctx, "committing transaction, almost done...")
return nil
})
}