This is an automated email from the ASF dual-hosted git repository.
rawlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
The following commit(s) were added to refs/heads/master by this push:
new e50482e Check if migration version is valid before all Migrate
commands (#6086)
e50482e is described below
commit e50482e7bb8c6bc65aa7fe45de36ad001e7cdd98
Author: Zach Hoffman <[email protected]>
AuthorDate: Thu Aug 5 16:44:00 2021 -0600
Check if migration version is valid before all Migrate commands (#6086)
* Check if migration version is valid before all Migrate commands
* Rename `path` to `source` in constant
* dbversion_output: Declare and assign separately to avoid masking return
values.
---
traffic_ops/app/db/admin.go | 42 ++++++++++++++++---------------
traffic_ops_db/test/docker/run-db-test.sh | 4 +--
2 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/traffic_ops/app/db/admin.go b/traffic_ops/app/db/admin.go
index cc09b4e..df53b38 100644
--- a/traffic_ops/app/db/admin.go
+++ b/traffic_ops/app/db/admin.go
@@ -112,10 +112,10 @@ const (
DefaultEnvironment = EnvDevelopment
DefaultDBSuperUser = "postgres"
- TrafficVaultDBConfigPath = TrafficVaultDir + "dbconf.yml"
- TrafficVaultMigrationsPath = "file:" + TrafficVaultDir + "migrations"
- TrafficVaultDir = dbDir + "trafficvault/"
- TrafficVaultSchemaPath = TrafficVaultDir + "create_tables.sql"
+ TrafficVaultDBConfigPath = TrafficVaultDir + "dbconf.yml"
+ TrafficVaultMigrationsSource = "file:" + TrafficVaultDir + "migrations"
+ TrafficVaultDir = dbDir + "trafficvault/"
+ TrafficVaultSchemaPath = TrafficVaultDir + "create_tables.sql"
)
var (
@@ -313,21 +313,22 @@ func upgrade() {
}
}
-func runMigrations() {
- initMigrate()
- migratedFromGoose := false
- if !TrafficVault {
- _, _, versionErr := Migrate.Version()
- if versionErr != nil {
- if versionErr != migrate.ErrNilVersion {
- die("Error running migrate version: " +
versionErr.Error())
- }
- migratedFromGoose = true
- if err := Migrate.Steps(1); err != nil {
- die("Error migrating to Migrate from Goose: " +
err.Error())
- }
- }
+func maybeMigrateFromGoose() bool {
+ _, _, versionErr := Migrate.Version()
+ if versionErr == nil {
+ return false
+ }
+ if versionErr != migrate.ErrNilVersion {
+ die("Error running migrate version: " + versionErr.Error())
}
+ if err := Migrate.Steps(1); err != nil {
+ die("Error migrating to Migrate from Goose: " + err.Error())
+ }
+ return true
+}
+
+func runMigrations() {
+ migratedFromGoose := initMigrate()
upErr := Migrate.Up()
if upErr == migrate.ErrNoChange {
if !migratedFromGoose {
@@ -561,11 +562,11 @@ func main() {
}
}
-func initMigrate() {
+func initMigrate() bool {
var err error
connectionString := fmt.Sprintf("%s://%s:%s@%s:%s/%s?sslmode=%s",
DBDriver, DBUser, DBPassword, HostIP, HostPort, DBName, SSLMode)
if TrafficVault {
- Migrate, err = migrate.New(TrafficVaultMigrationsPath,
connectionString)
+ Migrate, err = migrate.New(TrafficVaultMigrationsSource,
connectionString)
} else {
Migrate, err = migrate.New(DBMigrationsSource, connectionString)
}
@@ -573,6 +574,7 @@ func initMigrate() {
die("Starting Migrate: " + err.Error())
}
Migrate.Log = &Log{}
+ return maybeMigrateFromGoose()
}
// Log represents the logger
diff --git a/traffic_ops_db/test/docker/run-db-test.sh
b/traffic_ops_db/test/docker/run-db-test.sh
index b94b7d5..ff476d6 100755
--- a/traffic_ops_db/test/docker/run-db-test.sh
+++ b/traffic_ops_db/test/docker/run-db-test.sh
@@ -58,8 +58,8 @@ export GOPATH=/opt/traffic_ops/go
# gets the current DB version. On success, output the version number. On
failure, output a failure message starting with 'failed'.
get_current_db_version() {
- local dbversion_output=$(./db/admin --env=production dbversion 2>&1)
- if [[ $? -ne 0 ]]; then
+ local dbversion_output
+ if ! dbversion_output="$(./db/admin --env=production dbversion 2>&1)"; then
echo "failed to get dbversion: $dbversion_output"
return
fi