This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 e0ff62e2d67 Refactor QualifiedDataSourceChangedHandler (#34241)
e0ff62e2d67 is described below
commit e0ff62e2d6746bf160737bba4c529bbf7babb7fb
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 4 12:02:51 2025 +0800
Refactor QualifiedDataSourceChangedHandler (#34241)
---
.../handler/global/QualifiedDataSourceChangedHandler.java | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
index 6c8ad363e40..f2bb401f99b 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
@@ -34,6 +34,7 @@ import
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChang
import java.util.Arrays;
import java.util.Collection;
+import java.util.Optional;
/**
* Qualified data source changed handler.
@@ -52,13 +53,18 @@ public final class QualifiedDataSourceChangedHandler
implements DataChangedEvent
@Override
public void handle(final ContextManager contextManager, final
DataChangedEvent event) {
- if (!Strings.isNullOrEmpty(event.getValue())) {
- QualifiedDataSourceState state = new
YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(),
YamlQualifiedDataSourceState.class));
-
QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey()).ifPresent(optional
-> handle(contextManager.getMetaDataContexts().getMetaData(), optional,
state));
+ if (Strings.isNullOrEmpty(event.getValue())) {
+ return;
}
+ Optional<QualifiedDataSource> qualifiedDataSource =
QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey());
+ if (!qualifiedDataSource.isPresent()) {
+ return;
+ }
+ QualifiedDataSourceState state = new
YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(),
YamlQualifiedDataSourceState.class));
+
handleQualifiedDataSourceStateChanged(contextManager.getMetaDataContexts().getMetaData(),
qualifiedDataSource.get(), state);
}
- private void handle(final ShardingSphereMetaData metaData, final
QualifiedDataSource qualifiedDataSource, final QualifiedDataSourceState state) {
+ private void handleQualifiedDataSourceStateChanged(final
ShardingSphereMetaData metaData, final QualifiedDataSource qualifiedDataSource,
final QualifiedDataSourceState state) {
Preconditions.checkState(metaData.containsDatabase(qualifiedDataSource.getDatabaseName()),
"No database '%s' exists.", qualifiedDataSource.getDatabaseName());
metaData.getDatabase(qualifiedDataSource.getDatabaseName()).getRuleMetaData().getAttributes(StaticDataSourceRuleAttribute.class)
.forEach(each -> each.updateStatus(qualifiedDataSource,
state.getState()));