This is an automated email from the ASF dual-hosted git repository.
aleks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new d5d7f7f5a FINERACT-2119: Address jobs by name - fix liquibase order
for custom modules
d5d7f7f5a is described below
commit d5d7f7f5a0257914d87c5cc50361c1dbd5beb57f
Author: Marta Jankovics <[email protected]>
AuthorDate: Fri Aug 30 17:30:05 2024 +0200
FINERACT-2119: Address jobs by name - fix liquibase order for custom modules
---
.../migration/TenantDatabaseUpgradeService.java | 20 ++++++++++----------
.../core/LiquibaseStepDefinitions.java | 22 ++++++++++++----------
2 files changed, 22 insertions(+), 20 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java
index c65b6b101..75a1f8daf 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java
@@ -47,10 +47,10 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class TenantDatabaseUpgradeService implements InitializingBean {
- private static final String TENANT_STORE_DB_CONTEXT = "tenant_store_db";
- private static final String INITIAL_SWITCH_CONTEXT = "initial_switch";
- private static final String TENANT_DB_CONTEXT = "tenant_db";
- private static final String CUSTOM_CHANGELOG_CONTEXT = "custom_changelog";
+ public static final String TENANT_STORE_DB_CONTEXT = "tenant_store_db";
+ public static final String INITIAL_SWITCH_CONTEXT = "initial_switch";
+ public static final String TENANT_DB_CONTEXT = "tenant_db";
+ public static final String CUSTOM_CHANGELOG_CONTEXT = "custom_changelog";
private final TenantDetailsService tenantDetailsService;
@Qualifier("hikariTenantDataSource")
@@ -144,17 +144,17 @@ public class TenantDatabaseUpgradeService implements
InitializingBean {
private void upgradeIndividualTenant(FineractPlatformTenant tenant) throws
LiquibaseException {
log.info("Upgrade for tenant {} has started",
tenant.getTenantIdentifier());
DataSource tenantDataSource = tenantDataSourceFactory.create(tenant);
+ // 'initial_switch' and 'custom_changelog' contexts should be
controlled by the application configuration
+ // settings, and we should not use them to control the script order
if (databaseStateVerifier.isFirstLiquibaseMigration(tenantDataSource))
{
- ExtendedSpringLiquibase liquibase =
liquibaseFactory.create(tenantDataSource, TENANT_DB_CONTEXT,
INITIAL_SWITCH_CONTEXT,
- tenant.getTenantIdentifier());
+ ExtendedSpringLiquibase liquibase =
liquibaseFactory.create(tenantDataSource, TENANT_DB_CONTEXT,
CUSTOM_CHANGELOG_CONTEXT,
+ INITIAL_SWITCH_CONTEXT, tenant.getTenantIdentifier());
applyInitialLiquibase(tenantDataSource, liquibase,
tenant.getTenantIdentifier(),
(ds) ->
!databaseStateVerifier.isTenantOnLatestUpgradableVersion(ds));
}
- SpringLiquibase tenantLiquibase =
liquibaseFactory.create(tenantDataSource, TENANT_DB_CONTEXT,
tenant.getTenantIdentifier());
- tenantLiquibase.afterPropertiesSet();
- SpringLiquibase customChangelogLiquibase =
liquibaseFactory.create(tenantDataSource, TENANT_DB_CONTEXT,
CUSTOM_CHANGELOG_CONTEXT,
+ SpringLiquibase tenantLiquibase =
liquibaseFactory.create(tenantDataSource, TENANT_DB_CONTEXT,
CUSTOM_CHANGELOG_CONTEXT,
tenant.getTenantIdentifier());
- customChangelogLiquibase.afterPropertiesSet();
+ tenantLiquibase.afterPropertiesSet();
log.info("Upgrade for tenant {} has finished",
tenant.getTenantIdentifier());
}
diff --git
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/LiquibaseStepDefinitions.java
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/LiquibaseStepDefinitions.java
index bec504a26..e706a9004 100644
---
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/LiquibaseStepDefinitions.java
+++
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/LiquibaseStepDefinitions.java
@@ -18,6 +18,10 @@
*/
package org.apache.fineract.infrastructure.core;
+import static
org.apache.fineract.infrastructure.core.service.migration.TenantDatabaseUpgradeService.CUSTOM_CHANGELOG_CONTEXT;
+import static
org.apache.fineract.infrastructure.core.service.migration.TenantDatabaseUpgradeService.INITIAL_SWITCH_CONTEXT;
+import static
org.apache.fineract.infrastructure.core.service.migration.TenantDatabaseUpgradeService.TENANT_DB_CONTEXT;
+import static
org.apache.fineract.infrastructure.core.service.migration.TenantDatabaseUpgradeService.TENANT_STORE_DB_CONTEXT;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
@@ -57,7 +61,6 @@ public class LiquibaseStepDefinitions implements En {
private ExtendedSpringLiquibase tenantStoreLiquibase;
private ExtendedSpringLiquibase initialTenantLiquibase;
private ExtendedSpringLiquibase tenantLiquibase;
- private ExtendedSpringLiquibase customChangeLogLiquibase;
private FineractPlatformTenant defaultTenant;
private DataSource tenantStoreDataSource;
private TenantDatabaseUpgradeService tenantDatabaseUpgradeService;
@@ -127,7 +130,7 @@ public class LiquibaseStepDefinitions implements En {
assertThat(executionException).isNotNull();
verify(liquibaseFactory).create(eq(tenantStoreDataSource),
anyString(), anyString());
verify(liquibaseFactory).create(eq(tenantStoreDataSource),
anyString());
- verify(liquibaseFactory).create(eq(defaultTenantDataSource),
anyString(), anyString(), anyString());
+ verify(liquibaseFactory).create(eq(defaultTenantDataSource),
anyString(), anyString(), anyString(), anyString());
verifyNoMoreInteractions(liquibaseFactory);
verify(initialTenantStoreLiquibase).changeLogSync();
verify(tenantStoreLiquibase).afterPropertiesSet();
@@ -166,7 +169,6 @@ public class LiquibaseStepDefinitions implements En {
initialTenantLiquibase = mock(ExtendedSpringLiquibase.class);
tenantLiquibase = mock(ExtendedSpringLiquibase.class);
- customChangeLogLiquibase = mock(ExtendedSpringLiquibase.class);
initialTenantStoreLiquibase = mock(ExtendedSpringLiquibase.class);
tenantStoreLiquibase = mock(ExtendedSpringLiquibase.class);
@@ -175,16 +177,16 @@ public class LiquibaseStepDefinitions implements En {
TenantPasswordEncryptionTask tenantPasswordEncryptor =
mock(TenantPasswordEncryptionTask.class);
given(databaseStateVerifier.isLiquibaseDisabled()).willReturn(!liquibaseEnabled);
- given(liquibaseFactory.create(tenantStoreDataSource,
"tenant_store_db", "initial_switch")).willReturn(initialTenantStoreLiquibase);
- given(liquibaseFactory.create(tenantStoreDataSource,
"tenant_store_db")).willReturn(tenantStoreLiquibase);
+ given(liquibaseFactory.create(tenantStoreDataSource,
TENANT_STORE_DB_CONTEXT, INITIAL_SWITCH_CONTEXT))
+ .willReturn(initialTenantStoreLiquibase);
+ given(liquibaseFactory.create(tenantStoreDataSource,
TENANT_STORE_DB_CONTEXT)).willReturn(tenantStoreLiquibase);
given(tenantDetailsService.findAllTenants()).willReturn(allTenants);
given(tenantDataSourceFactory.create(defaultTenant)).willReturn(defaultTenantDataSource);
- given(liquibaseFactory.create(defaultTenantDataSource, "tenant_db",
"initial_switch", "defaultTenant"))
- .willReturn(initialTenantLiquibase);
- given(liquibaseFactory.create(defaultTenantDataSource, "tenant_db",
"defaultTenant")).willReturn(tenantLiquibase);
- given(liquibaseFactory.create(defaultTenantDataSource, "tenant_db",
"custom_changelog", "defaultTenant"))
- .willReturn(customChangeLogLiquibase);
+ given(liquibaseFactory.create(defaultTenantDataSource,
TENANT_DB_CONTEXT, CUSTOM_CHANGELOG_CONTEXT, INITIAL_SWITCH_CONTEXT,
+ "defaultTenant")).willReturn(initialTenantLiquibase);
+ given(liquibaseFactory.create(defaultTenantDataSource,
TENANT_DB_CONTEXT, CUSTOM_CHANGELOG_CONTEXT, "defaultTenant"))
+ .willReturn(tenantLiquibase);
tenantDatabaseUpgradeService = new
TenantDatabaseUpgradeService(tenantDetailsService, tenantStoreDataSource,
fineractProperties,
databaseStateVerifier, liquibaseFactory,
tenantDataSourceFactory, environment, Arrays.asList(tenantPasswordEncryptor));