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

Reply via email to