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 <[email protected]>
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) {