You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by az...@apache.org on 2023/02/22 07:00:24 UTC
[shardingsphere] branch master updated: Fix migration job target jdbc url parameters changed in job configuration (#24295)
This is an automated email from the ASF dual-hosted git repository.
azexin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 2a6bb4fdba0 Fix migration job target jdbc url parameters changed in job configuration (#24295)
2a6bb4fdba0 is described below
commit 2a6bb4fdba02e6a5d0ebf23bb89c1e2d0ba03422
Author: Hongsheng Zhong <zh...@apache.org>
AuthorDate: Wed Feb 22 15:00:13 2023 +0800
Fix migration job target jdbc url parameters changed in job configuration (#24295)
* Fix migration job target jdbc url changed
* Improve migration job source initialization
* Extract createYamlJobConfiguration from createJobAndStart
---
.../scenario/migration/api/impl/MigrationJobAPI.java | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
index 4361e59e62e..c55458ea1f6 100644
--- a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
+++ b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
@@ -84,7 +84,6 @@ import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCrea
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
@@ -415,14 +414,20 @@ public final class MigrationJobAPI extends AbstractInventoryIncrementalJobAPIImp
* @return job id
*/
public String createJobAndStart(final CreateMigrationJobParameter param) {
+ MigrationJobConfiguration jobConfig = new YamlMigrationJobConfigurationSwapper().swapToObject(createYamlJobConfiguration(param));
+ start(jobConfig);
+ return jobConfig.getJobId();
+ }
+
+ private YamlMigrationJobConfiguration createYamlJobConfiguration(final CreateMigrationJobParameter param) {
YamlMigrationJobConfiguration result = new YamlMigrationJobConfiguration();
Map<String, DataSourceProperties> metaDataDataSource = dataSourcePersistService.load(new MigrationJobType());
Map<String, Object> sourceDataSourceProps = swapper.swapToMap(metaDataDataSource.get(param.getSourceResourceName()));
+ StandardPipelineDataSourceConfiguration sourceDataSourceConfig = new StandardPipelineDataSourceConfiguration(sourceDataSourceProps);
YamlPipelineDataSourceConfiguration sourcePipelineDataSourceConfig = createYamlPipelineDataSourceConfiguration(
- StandardPipelineDataSourceConfiguration.TYPE, YamlEngine.marshal(sourceDataSourceProps));
+ sourceDataSourceConfig.getType(), sourceDataSourceConfig.getParameter());
result.setSource(sourcePipelineDataSourceConfig);
result.setSourceResourceName(param.getSourceResourceName());
- StandardPipelineDataSourceConfiguration sourceDataSourceConfig = new StandardPipelineDataSourceConfiguration(sourceDataSourceProps);
DatabaseType sourceDatabaseType = sourceDataSourceConfig.getDatabaseType();
result.setSourceDatabaseType(sourceDatabaseType.getType());
String sourceSchemaName = null == param.getSourceSchemaName() && sourceDatabaseType.isSchemaAvailable()
@@ -439,14 +444,12 @@ public final class MigrationJobAPI extends AbstractInventoryIncrementalJobAPIImp
String targetDatabaseName = param.getTargetDatabaseName();
YamlRootConfiguration targetRootConfig = getYamlRootConfiguration(targetDatabaseName, targetDataSourceProps, targetDatabase.getRuleMetaData().getConfigurations());
PipelineDataSourceConfiguration targetPipelineDataSource = new ShardingSpherePipelineDataSourceConfiguration(targetRootConfig);
- result.setTarget(createYamlPipelineDataSourceConfiguration(targetPipelineDataSource.getType(), YamlEngine.marshal(targetPipelineDataSource.getDataSourceConfiguration())));
+ result.setTarget(createYamlPipelineDataSourceConfiguration(targetPipelineDataSource.getType(), targetPipelineDataSource.getParameter()));
result.setTargetDatabaseType(targetPipelineDataSource.getDatabaseType().getType());
result.setTargetDatabaseName(targetDatabaseName);
result.setTargetTableName(param.getTargetTableName());
extendYamlJobConfiguration(result);
- MigrationJobConfiguration jobConfig = new YamlMigrationJobConfigurationSwapper().swapToObject(result);
- start(jobConfig);
- return jobConfig.getJobId();
+ return result;
}
private YamlRootConfiguration getYamlRootConfiguration(final String databaseName, final Map<String, Map<String, Object>> yamlDataSources, final Collection<RuleConfiguration> rules) {