Problem Description
Jmix Version: 1.7.1
We have a multi-store configuration where:
- Main store uses schema:
digital_modularization_primary - Additional store (digital) uses schema:
digital_addon
Expected Behavior:
- Liquibase scripts from the addon should ONLY run on the digital datasource (schema:
digital_addon) - Main project Liquibase should ONLY run on the main datasource (schema:
digital_modularization_primary)
Actual Behavior:
- Addon Liquibase scripts are running on BOTH datasources
- Scripts execute on both
digital_addonANDdigital_modularization_primaryschemas
Configuration
Addon module.properties:
digital.datasource.jdbc-url=jdbc:postgresql://1.1.1.1:9876/Dev?currentSchema=digital_addon
jmix.core.additional-stores=digital
jmix.data.stores = digital
digital.liquibase.enabled=true
jmix.liquibase.store-enabled.digital=false # Attempted to disable
Addon Configuration Class:
@Bean
@ConditionalOnProperty(name = “digital.liquibase.enabled”, havingValue = “true”)
public SpringLiquibase digitalLiquibase(
@Qualifier(“digitalDataSource”) DataSource dataSource) {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
liquibase.setChangeLog(“classpath:/com/mcollect/digital/liquibase/changelog.xml”);
liquibase.setContexts(“digital”);
return liquibase;
}
Expected Solution
We need a clear way to:
- Disable automatic Liquibase for specific stores while keeping it enabled for others
- Ensure addon Liquibase scripts run exclusively on their configured datasource
- Prevent cross-store Liquibase execution without complex workarounds