From 230c7f7420c1c595033c92021e7a9d8f5c02ed7e Mon Sep 17 00:00:00 2001 From: Nicholas Spadaccino <37352107+nspadaccino@users.noreply.github.com> Date: Tue, 12 Apr 2022 10:07:22 -0400 Subject: [PATCH] Fix Dev Deployment Failure due to Flyway DB Migration Issue (#1104) --- build/docker/.env | 1 + build/docker/api/application.conf | 2 ++ modules/api/src/it/resources/application.conf | 2 ++ modules/api/src/main/resources/application.conf | 2 ++ modules/api/src/test/resources/application.conf | 2 ++ modules/api/src/universal/conf/application.conf | 2 ++ modules/mysql/src/it/resources/application.conf | 2 ++ .../src/main/scala/vinyldns/mysql/MySqlConnectionConfig.scala | 1 + .../mysql/src/main/scala/vinyldns/mysql/MySqlConnector.scala | 1 + modules/mysql/src/test/resources/application.conf | 1 + .../test/scala/vinyldns/mysql/MySqlConnectionConfigSpec.scala | 1 + modules/portal/conf/application-test.conf | 1 + quickstart/.env | 1 + test/api/functional/application.conf | 2 ++ test/api/integration/application.conf | 2 ++ 15 files changed, 23 insertions(+) diff --git a/build/docker/.env b/build/docker/.env index f5bcadd7d..feb7fcbe4 100644 --- a/build/docker/.env +++ b/build/docker/.env @@ -17,3 +17,4 @@ JDBC_URL=jdbc:mariadb://vinyldns-integration:19002/vinyldns?user=root&password=p JDBC_MIGRATION_URL=jdbc:mariadb://vinyldns-integration:19002/?user=root&password=pass JDBC_USER=root JDBC_PASSWORD=pass +FLYWAY_OUT_OF_ORDER=false diff --git a/build/docker/api/application.conf b/build/docker/api/application.conf index 73208b9c3..43b6ee57e 100644 --- a/build/docker/api/application.conf +++ b/build/docker/api/application.conf @@ -186,6 +186,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} } # TODO: Remove the need for these useless configuration blocks diff --git a/modules/api/src/it/resources/application.conf b/modules/api/src/it/resources/application.conf index 73208b9c3..43b6ee57e 100644 --- a/modules/api/src/it/resources/application.conf +++ b/modules/api/src/it/resources/application.conf @@ -186,6 +186,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} } # TODO: Remove the need for these useless configuration blocks diff --git a/modules/api/src/main/resources/application.conf b/modules/api/src/main/resources/application.conf index 73208b9c3..43b6ee57e 100644 --- a/modules/api/src/main/resources/application.conf +++ b/modules/api/src/main/resources/application.conf @@ -186,6 +186,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} } # TODO: Remove the need for these useless configuration blocks diff --git a/modules/api/src/test/resources/application.conf b/modules/api/src/test/resources/application.conf index 123ea4220..2e5a0d2d5 100644 --- a/modules/api/src/test/resources/application.conf +++ b/modules/api/src/test/resources/application.conf @@ -195,6 +195,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} } # TODO: Remove the need for these useless configuration blocks diff --git a/modules/api/src/universal/conf/application.conf b/modules/api/src/universal/conf/application.conf index 73208b9c3..43b6ee57e 100644 --- a/modules/api/src/universal/conf/application.conf +++ b/modules/api/src/universal/conf/application.conf @@ -186,6 +186,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} } # TODO: Remove the need for these useless configuration blocks diff --git a/modules/mysql/src/it/resources/application.conf b/modules/mysql/src/it/resources/application.conf index d17e78063..d890607c2 100644 --- a/modules/mysql/src/it/resources/application.conf +++ b/modules/mysql/src/it/resources/application.conf @@ -13,6 +13,7 @@ mysql { url = "jdbc:mariadb://"${mysql.endpoint}"/vinyldns2" user = "root" password = "pass" + flyway-out-of-order = false # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 @@ -49,6 +50,7 @@ queue { url = "jdbc:mariadb://"${mysql.endpoint}"/vinyldns2?user=root&password=pass" user = "root" password = "pass" + flyway-out-of-order = false # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 diff --git a/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnectionConfig.scala b/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnectionConfig.scala index 6a256649f..5091fb505 100644 --- a/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnectionConfig.scala +++ b/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnectionConfig.scala @@ -35,6 +35,7 @@ final case class MySqlConnectionConfig( url: String, user: String, password: String, + flywayOutOfOrder: Boolean, migrationSchemaTable: Option[String], // Optional settings, will use Hikari defaults if unset // see https://github.com/brettwooldridge/HikariCP#frequently-used diff --git a/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnector.scala b/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnector.scala index 1fda213a2..6041d703e 100644 --- a/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnector.scala +++ b/modules/mysql/src/main/scala/vinyldns/mysql/MySqlConnector.scala @@ -48,6 +48,7 @@ object MySqlConnector { val placeholders = Map("dbName" -> config.name) val migration = Flyway .configure() + .outOfOrder(config.flywayOutOfOrder) .dataSource(migrationDataSource) .placeholders(placeholders.asJava) .schemas(config.name) diff --git a/modules/mysql/src/test/resources/application.conf b/modules/mysql/src/test/resources/application.conf index d1045c2c9..be843a585 100644 --- a/modules/mysql/src/test/resources/application.conf +++ b/modules/mysql/src/test/resources/application.conf @@ -11,6 +11,7 @@ mysql { url = "url" user = "some-user" password = "some-pass" + flyway-out-of-order = false # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 diff --git a/modules/mysql/src/test/scala/vinyldns/mysql/MySqlConnectionConfigSpec.scala b/modules/mysql/src/test/scala/vinyldns/mysql/MySqlConnectionConfigSpec.scala index a1af192c1..99e8e0bba 100644 --- a/modules/mysql/src/test/scala/vinyldns/mysql/MySqlConnectionConfigSpec.scala +++ b/modules/mysql/src/test/scala/vinyldns/mysql/MySqlConnectionConfigSpec.scala @@ -55,6 +55,7 @@ class MySqlConnectionConfigSpec extends AnyWordSpec with Matchers { | url = "url" | user = "some-user" | password = "some-pass" + | flyway-out-of-order = false | } | """.stripMargin) diff --git a/modules/portal/conf/application-test.conf b/modules/portal/conf/application-test.conf index bde3880f0..80c4eede1 100644 --- a/modules/portal/conf/application-test.conf +++ b/modules/portal/conf/application-test.conf @@ -18,6 +18,7 @@ mysql { url = "http://foo.bar" user = "root" password = "pass" + flyway-out-of-order = false } repositories { diff --git a/quickstart/.env b/quickstart/.env index aae1e5af8..a84dff07e 100644 --- a/quickstart/.env +++ b/quickstart/.env @@ -23,3 +23,4 @@ JDBC_URL=jdbc:mariadb://vinyldns-integration:19002/vinyldns?user=root&password=p JDBC_MIGRATION_URL=jdbc:mariadb://vinyldns-integration:19002/?user=root&password=pass JDBC_USER=root JDBC_PASSWORD=pass +FLYWAY_OUT_OF_ORDER=false diff --git a/test/api/functional/application.conf b/test/api/functional/application.conf index cd56c482e..86c9e70b3 100644 --- a/test/api/functional/application.conf +++ b/test/api/functional/application.conf @@ -132,6 +132,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 idle-timeout = 10000 diff --git a/test/api/integration/application.conf b/test/api/integration/application.conf index ac795eef8..5e152aa03 100644 --- a/test/api/integration/application.conf +++ b/test/api/integration/application.conf @@ -187,6 +187,8 @@ vinyldns { user = ${?JDBC_USER} password = "pass" password = ${?JDBC_PASSWORD} + flyway-out-of-order = false + flyway-out-of-order = ${?FLYWAY_OUT_OF_ORDER} # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 idle-timeout = 10000