This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 ee94ec47cb6 Fix feature rule configuration event builder (#26351)
ee94ec47cb6 is described below
commit ee94ec47cb629582d054d0fa971243a50358cda6
Author: ChenJiaHao <[email protected]>
AuthorDate: Wed Jun 14 23:02:24 2023 +0800
Fix feature rule configuration event builder (#26351)
---
...writeSplittingRuleConfigurationEventBuilder.java | 21 ++++++++++++++-------
.../event/ShadowRuleConfigurationEventBuilder.java | 12 ++++++------
2 files changed, 20 insertions(+), 13 deletions(-)
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
index bfaa1cd10c5..0ccabc1afc1 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import org.apache.shardingsphere.mode.spi.RuleConfigurationEventBuilder;
import
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
import
org.apache.shardingsphere.readwritesplitting.event.config.AddReadwriteSplittingConfigurationEvent;
import
org.apache.shardingsphere.readwritesplitting.event.config.AlterReadwriteSplittingConfigurationEvent;
import
org.apache.shardingsphere.readwritesplitting.event.config.DeleteReadwriteSplittingConfigurationEvent;
@@ -34,8 +35,7 @@ import
org.apache.shardingsphere.readwritesplitting.event.loadbalance.AddLoadBal
import
org.apache.shardingsphere.readwritesplitting.event.loadbalance.AlterLoadBalanceEvent;
import
org.apache.shardingsphere.readwritesplitting.event.loadbalance.DeleteLoadBalanceEvent;
import
org.apache.shardingsphere.readwritesplitting.metadata.converter.ReadwriteSplittingNodeConverter;
-import
org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
-import
org.apache.shardingsphere.readwritesplitting.yaml.swapper.YamlReadwriteSplittingRuleConfigurationSwapper;
+import
org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceRuleConfiguration;
import java.util.Optional;
@@ -62,17 +62,24 @@ public final class
ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
private Optional<GovernanceEvent>
createReadwriteSplittingConfigEvent(final String databaseName, final String
groupName, final DataChangedEvent event) {
if (Type.ADDED == event.getType()) {
- return Optional.of(new
AddReadwriteSplittingConfigurationEvent<>(databaseName,
swapReadwriteSplittingDataSourceRuleConfig(event.getValue())));
+ return Optional.of(new
AddReadwriteSplittingConfigurationEvent<>(databaseName,
swapDataSource(groupName, event.getValue())));
}
if (Type.UPDATED == event.getType()) {
- return Optional.of(new
AlterReadwriteSplittingConfigurationEvent<>(databaseName, groupName,
swapReadwriteSplittingDataSourceRuleConfig(event.getValue())));
+ return Optional.of(new
AlterReadwriteSplittingConfigurationEvent<>(databaseName, groupName,
swapDataSource(groupName, event.getValue())));
}
return Optional.of(new
DeleteReadwriteSplittingConfigurationEvent(databaseName, groupName));
}
- // TODO Consider extract
ReadwriteSplittingDataSourceRuleConfigurationSwapper
- private ReadwriteSplittingDataSourceRuleConfiguration
swapReadwriteSplittingDataSourceRuleConfig(final String yamlContext) {
- return new
YamlReadwriteSplittingRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
YamlReadwriteSplittingRuleConfiguration.class)).getDataSources().iterator().next();
+ private ReadwriteSplittingDataSourceRuleConfiguration swapDataSource(final
String name, final String yamlContext) {
+ YamlReadwriteSplittingDataSourceRuleConfiguration
yamlDataSourceRuleConfig = YamlEngine.unmarshal(yamlContext,
YamlReadwriteSplittingDataSourceRuleConfiguration.class);
+ return new ReadwriteSplittingDataSourceRuleConfiguration(name,
yamlDataSourceRuleConfig.getWriteDataSourceName(),
yamlDataSourceRuleConfig.getReadDataSourceNames(),
+ getTransactionalReadQueryStrategy(yamlDataSourceRuleConfig),
yamlDataSourceRuleConfig.getLoadBalancerName());
+ }
+
+ private TransactionalReadQueryStrategy
getTransactionalReadQueryStrategy(final
YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) {
+ return
Strings.isNullOrEmpty(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy())
+ ? TransactionalReadQueryStrategy.DYNAMIC
+ :
TransactionalReadQueryStrategy.valueOf(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy());
}
private Optional<GovernanceEvent> createLoadBalanceEvent(final String
databaseName, final String loadBalanceName, final DataChangedEvent event) {
diff --git
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
index 88642c63573..b61ee51cd34 100644
---
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
+++
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
@@ -38,9 +38,8 @@ import
org.apache.shardingsphere.shadow.event.table.AddShadowTableEvent;
import org.apache.shardingsphere.shadow.event.table.AlterShadowTableEvent;
import org.apache.shardingsphere.shadow.event.table.DeleteShadowTableEvent;
import org.apache.shardingsphere.shadow.metadata.converter.ShadowNodeConverter;
-import
org.apache.shardingsphere.shadow.yaml.config.YamlShadowRuleConfiguration;
+import
org.apache.shardingsphere.shadow.yaml.config.datasource.YamlShadowDataSourceConfiguration;
import
org.apache.shardingsphere.shadow.yaml.config.table.YamlShadowTableConfiguration;
-import
org.apache.shardingsphere.shadow.yaml.swapper.YamlShadowRuleConfigurationSwapper;
import
org.apache.shardingsphere.shadow.yaml.swapper.table.YamlShadowTableConfigurationSwapper;
import java.util.Optional;
@@ -72,16 +71,17 @@ public final class ShadowRuleConfigurationEventBuilder
implements RuleConfigurat
private Optional<GovernanceEvent> createShadowConfigEvent(final String
databaseName, final String dataSourceName, final DataChangedEvent event) {
if (Type.ADDED == event.getType()) {
- return Optional.of(new AddShadowConfigurationEvent<>(databaseName,
swapShadowDataSourceRuleConfig(event.getValue())));
+ return Optional.of(new AddShadowConfigurationEvent<>(databaseName,
swapShadowDataSourceRuleConfig(dataSourceName, event.getValue())));
}
if (Type.UPDATED == event.getType()) {
- return Optional.of(new
AlterShadowConfigurationEvent<>(databaseName, dataSourceName,
swapShadowDataSourceRuleConfig(event.getValue())));
+ return Optional.of(new
AlterShadowConfigurationEvent<>(databaseName, dataSourceName,
swapShadowDataSourceRuleConfig(dataSourceName, event.getValue())));
}
return Optional.of(new DeleteShadowConfigurationEvent(databaseName,
dataSourceName));
}
- private ShadowDataSourceConfiguration swapShadowDataSourceRuleConfig(final
String yamlContext) {
- return new
YamlShadowRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
YamlShadowRuleConfiguration.class)).getDataSources().iterator().next();
+ private ShadowDataSourceConfiguration swapShadowDataSourceRuleConfig(final
String dataSourceName, final String yamlContext) {
+ YamlShadowDataSourceConfiguration yamlConfig =
YamlEngine.unmarshal(yamlContext, YamlShadowDataSourceConfiguration.class);
+ return new ShadowDataSourceConfiguration(dataSourceName,
yamlConfig.getProductionDataSourceName(), yamlConfig.getShadowDataSourceName());
}
private Optional<GovernanceEvent> createShadowTableConfigEvent(final
String databaseName, final String tableName, final DataChangedEvent event) {