From 29836a8d6c7b3c0f4b0e6d2d56e1c9f8db0d0589 Mon Sep 17 00:00:00 2001 From: saurabh24thakur Date: Fri, 2 Jan 2026 19:59:18 +0530 Subject: [PATCH 1/3] fix: ignore applied migration checksums via config --- pom.xml | 1 + .../piramalswasthya/config/FlywayConfig.java | 73 ++++++++++--------- .../resources/application-local.properties | 21 ++++++ src/main/resources/application.properties | 2 + 4 files changed, 62 insertions(+), 35 deletions(-) create mode 100644 src/main/resources/application-local.properties diff --git a/pom.xml b/pom.xml index af84c84..e11e72d 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ org.projectlombok lombok + 1.18.36 false diff --git a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java index b68fb4b..7dc4ac0 100644 --- a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java +++ b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java @@ -3,46 +3,49 @@ import javax.sql.DataSource; import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.configuration.FluentConfiguration; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class FlywayConfig { - @Bean - public Flyway flywayDbiemr(@Qualifier("dbiemrDataSource") DataSource dataSource) { - return Flyway.configure() - .dataSource(dataSource) - .locations("classpath:db/migration/dbiemr") - .baselineOnMigrate(true) - .load(); - } - - @Bean - public Flyway flywayDbidentity(@Qualifier("dbidentityDataSource") DataSource dataSource) { - return Flyway.configure() - .dataSource(dataSource) - .locations("classpath:db/migration/dbidentity") - .baselineOnMigrate(true) - .load(); - } - - @Bean - public Flyway flywayDbreporting(@Qualifier("dbreportingDataSource") DataSource dataSource) { - return Flyway.configure() - .dataSource(dataSource) - .locations("classpath:db/migration/dbreporting") - .baselineOnMigrate(true) - .load(); - } - - @Bean - public Flyway flywayDb1097identity(@Qualifier("db1097identityDataSource") DataSource dataSource) { - return Flyway.configure() - .dataSource(dataSource) - .locations("classpath:db/migration/db1097identity") - .baselineOnMigrate(true) - .load(); - } + + @Value("${amrit.flyway.ignore-applied-migration-checksum:false}") + private boolean ignoreAppliedMigrationChecksum; + + private Flyway createFlyway(DataSource dataSource, String location) { + FluentConfiguration configuration = Flyway.configure() + .dataSource(dataSource) + .locations(location) + .baselineOnMigrate(true); + + if (ignoreAppliedMigrationChecksum) { + configuration.ignoreMigrationPatterns("*:applied"); + } + + return configuration.load(); + } + + @Bean + public Flyway flywayDbiemr(@Qualifier("dbiemrDataSource") DataSource dataSource) { + return createFlyway(dataSource, "classpath:db/migration/dbiemr"); + } + + @Bean + public Flyway flywayDbidentity(@Qualifier("dbidentityDataSource") DataSource dataSource) { + return createFlyway(dataSource, "classpath:db/migration/dbidentity"); + } + + @Bean + public Flyway flywayDbreporting(@Qualifier("dbreportingDataSource") DataSource dataSource) { + return createFlyway(dataSource, "classpath:db/migration/dbreporting"); + } + + @Bean + public Flyway flywayDb1097identity(@Qualifier("db1097identityDataSource") DataSource dataSource) { + return createFlyway(dataSource, "classpath:db/migration/db1097identity"); + } } diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties new file mode 100644 index 0000000..774dea1 --- /dev/null +++ b/src/main/resources/application-local.properties @@ -0,0 +1,21 @@ +spring.datasource.dbiemr.url=jdbc:mysql://localhost:3306/dbiemr +spring.datasource.dbiemr.username=user +spring.datasource.dbiemr.password=password +spring.datasource.dbiemr.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.datasource.dbidentity.url=jdbc:mysql://localhost:3306/dbidentity +spring.datasource.dbidentity.username=user +spring.datasource.dbidentity.password=password +spring.datasource.dbidentity.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.datasource.dbreporting.url=jdbc:mysql://localhost:3306/dbreporting +spring.datasource.dbreporting.username=user +spring.datasource.dbreporting.password=password +spring.datasource.dbreporting.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.datasource.db1097identity.url=jdbc:mysql://localhost:3306/db1097identity +spring.datasource.db1097identity.username=user +spring.datasource.db1097identity.password=password +spring.datasource.db1097identity.driver-class-name=com.mysql.cj.jdbc.Driver + +amrit.flyway.ignore-applied-migration-checksum=true diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4f88a79..0089da4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -48,3 +48,5 @@ spring.datasource.db1097identity.password= Date: Wed, 7 Jan 2026 18:10:18 +0530 Subject: [PATCH 2/3] Fix Flyway ignoreMigrationPatterns syntax Updated ignoreMigrationPatterns to fix invalid pattern syntax for Flyway configuration. --- .../java/com/db/piramalswasthya/config/FlywayConfig.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java index 7dc4ac0..654e107 100644 --- a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java +++ b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java @@ -15,6 +15,10 @@ public class FlywayConfig { @Value("${amrit.flyway.ignore-applied-migration-checksum:false}") private boolean ignoreAppliedMigrationChecksum; + /** + * Helper method to create a Flyway instance with centralized configuration. + * Updated to use valid ignoreMigrationPatterns status. + */ private Flyway createFlyway(DataSource dataSource, String location) { FluentConfiguration configuration = Flyway.configure() .dataSource(dataSource) @@ -22,7 +26,9 @@ private Flyway createFlyway(DataSource dataSource, String location) { .baselineOnMigrate(true); if (ignoreAppliedMigrationChecksum) { - configuration.ignoreMigrationPatterns("*:applied"); + // Updated from "*:applied" to "*:Ignored" to fix invalid pattern syntax + // This allows the app to start even if checksums for applied migrations have changed locally + configuration.ignoreMigrationPatterns("*:Ignored"); } return configuration.load(); @@ -47,5 +53,4 @@ public Flyway flywayDbreporting(@Qualifier("dbreportingDataSource") DataSource d public Flyway flywayDb1097identity(@Qualifier("db1097identityDataSource") DataSource dataSource) { return createFlyway(dataSource, "classpath:db/migration/db1097identity"); } - } From af4be46548cc48748c81c84701f54b142c61df7f Mon Sep 17 00:00:00 2001 From: saurabh24thakur Date: Wed, 14 Jan 2026 08:41:28 +0530 Subject: [PATCH 3/3] fix: use validateOnMigrate(false) for community edition and remove local props --- .../piramalswasthya/config/FlywayConfig.java | 6 +++--- .../resources/application-local.properties | 21 ------------------- 2 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 src/main/resources/application-local.properties diff --git a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java index 654e107..c9736be 100644 --- a/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java +++ b/src/main/java/com/db/piramalswasthya/config/FlywayConfig.java @@ -26,9 +26,9 @@ private Flyway createFlyway(DataSource dataSource, String location) { .baselineOnMigrate(true); if (ignoreAppliedMigrationChecksum) { - // Updated from "*:applied" to "*:Ignored" to fix invalid pattern syntax - // This allows the app to start even if checksums for applied migrations have changed locally - configuration.ignoreMigrationPatterns("*:Ignored"); + // Updated to use validateOnMigrate(false) which is supported in Community Edition + // This disables validation of applied migrations, allowing the app to start even if checksums change + configuration.validateOnMigrate(false); } return configuration.load(); diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties deleted file mode 100644 index 774dea1..0000000 --- a/src/main/resources/application-local.properties +++ /dev/null @@ -1,21 +0,0 @@ -spring.datasource.dbiemr.url=jdbc:mysql://localhost:3306/dbiemr -spring.datasource.dbiemr.username=user -spring.datasource.dbiemr.password=password -spring.datasource.dbiemr.driver-class-name=com.mysql.cj.jdbc.Driver - -spring.datasource.dbidentity.url=jdbc:mysql://localhost:3306/dbidentity -spring.datasource.dbidentity.username=user -spring.datasource.dbidentity.password=password -spring.datasource.dbidentity.driver-class-name=com.mysql.cj.jdbc.Driver - -spring.datasource.dbreporting.url=jdbc:mysql://localhost:3306/dbreporting -spring.datasource.dbreporting.username=user -spring.datasource.dbreporting.password=password -spring.datasource.dbreporting.driver-class-name=com.mysql.cj.jdbc.Driver - -spring.datasource.db1097identity.url=jdbc:mysql://localhost:3306/db1097identity -spring.datasource.db1097identity.username=user -spring.datasource.db1097identity.password=password -spring.datasource.db1097identity.driver-class-name=com.mysql.cj.jdbc.Driver - -amrit.flyway.ignore-applied-migration-checksum=true