Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit ef50a04

Browse files
authored
chore/enterpriseportal: tweak maybeMigrate tracing (#63448)
Fix an issue with context propagation and add a little more detail on automigration steps ## Test plan CI
1 parent 4d69b06 commit ef50a04

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

cmd/enterprise-portal/internal/database/migrate.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ import (
2626
// maybeMigrate runs the auto-migration for the database when needed based on
2727
// the given version.
2828
func maybeMigrate(ctx context.Context, logger log.Logger, contract runtime.Contract, redisClient *redis.Client, currentVersion string) (err error) {
29+
dbName := databaseName(contract.MSP)
2930
ctx, span := databaseTracer.Start(
3031
ctx,
3132
"database.maybeMigrate",
3233
trace.WithAttributes(
3334
attribute.String("currentVersion", currentVersion),
35+
attribute.String("database", dbName),
3436
),
3537
)
3638
defer func() {
@@ -41,7 +43,6 @@ func maybeMigrate(ctx context.Context, logger log.Logger, contract runtime.Contr
4143
span.End()
4244
}()
4345

44-
dbName := databaseName(contract.MSP)
4546
sqlDB, err := contract.PostgreSQL.OpenDatabase(ctx, dbName)
4647
if err != nil {
4748
return errors.Wrap(err, "open database")
@@ -78,11 +79,12 @@ func maybeMigrate(ctx context.Context, logger log.Logger, contract runtime.Contr
7879
fmt.Sprintf("%s:auto-migrate", dbName),
7980
15*time.Second,
8081
func() error {
82+
ctx := context.WithoutCancel(ctx)
8183
span.AddEvent("lock.acquired")
8284

8385
versionKey := fmt.Sprintf("%s:db_version", dbName)
8486
if shouldSkipMigration(
85-
redisClient.Get(context.Background(), versionKey).Val(),
87+
redisClient.Get(ctx, versionKey).Val(),
8688
currentVersion,
8789
) {
8890
logger.Info("skipped auto-migration",
@@ -92,20 +94,22 @@ func maybeMigrate(ctx context.Context, logger log.Logger, contract runtime.Contr
9294
span.SetAttributes(attribute.Bool("skipped", true))
9395
return nil
9496
}
97+
span.SetAttributes(attribute.Bool("skipped", false))
9598

9699
// Create a session that ignore debug logging.
97100
sess := conn.Session(&gorm.Session{
98101
Logger: gormlogger.Default.LogMode(gormlogger.Warn),
99102
})
100103
// Auto-migrate database table definitions.
101104
for _, table := range tables.All() {
105+
span.AddEvent(fmt.Sprintf("automigrate.%s", table.TableName()))
102106
err := sess.AutoMigrate(table)
103107
if err != nil {
104108
return errors.Wrapf(err, "auto migrating table for %s", errors.Safe(fmt.Sprintf("%T", table)))
105109
}
106110
}
107111

108-
return redisClient.Set(context.Background(), versionKey, currentVersion, 0).Err()
112+
return redisClient.Set(ctx, versionKey, currentVersion, 0).Err()
109113
},
110114
)
111115
}

lib/managedservicesplatform/iam/database.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ func migrateAndReconcile(ctx context.Context, logger log.Logger, sqlDB *sql.DB,
7878
})
7979
// Auto-migrate database table definitions.
8080
for _, table := range []any{&metadata{}} {
81+
span.AddEvent(fmt.Sprintf("automigrate.%s", fmt.Sprintf("%T", table)))
8182
err := sess.AutoMigrate(table)
8283
if err != nil {
8384
return errors.Wrapf(err, "auto migrating table for %s", errors.Safe(fmt.Sprintf("%T", table)))
@@ -91,7 +92,7 @@ func migrateAndReconcile(ctx context.Context, logger log.Logger, sqlDB *sql.DB,
9192
assets.PostgresMigrationDir,
9293
)
9394
if err != nil {
94-
return errors.Wrap(err, "run migrations")
95+
return errors.Wrap(err, "run OpenFGA migrations")
9596
}
9697
return nil
9798
},

0 commit comments

Comments
 (0)