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 d26aea8  Refactor governance schema changed notifier (#8613)
d26aea8 is described below

commit d26aea8278470f1e6b670631dbe64279a078a410
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Dec 14 19:27:11 2020 +0800

    Refactor governance schema changed notifier (#8613)
---
 .../event/notifier}/GovernanceSchemaChangedNotifier.java    |  6 +++---
 ...nfra.metadata.schema.refresher.spi.SchemaChangedNotifier |  2 +-
 .../backend/communication/DatabaseCommunicationEngine.java  | 13 +++++++++----
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/GovernanceSchemaChangedNotifier.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
similarity index 95%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/GovernanceSchemaChangedNotifier.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
index 8487e82..3204ef5 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/GovernanceSchemaChangedNotifier.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.driver.governance.internal.metadata;
+package org.apache.shardingsphere.governance.core.event.notifier;
 
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
 import 
org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
-import 
org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier;
+import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
 import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier;
 
 /**
  * ShardingSphere schema changed notifier for governance.
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
similarity index 89%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
rename to 
shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
index c7b2336..8f0889f 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.driver.governance.internal.metadata.GovernanceSchemaChangedNotifier
+org.apache.shardingsphere.governance.core.event.notifier.GovernanceSchemaChangedNotifier
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
index 87f2e17..56e3cbf 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
@@ -18,13 +18,11 @@
 package org.apache.shardingsphere.proxy.backend.communication;
 
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
 import org.apache.shardingsphere.infra.binder.LogicSQL;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
@@ -38,7 +36,10 @@ import 
org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
 import 
org.apache.shardingsphere.infra.metadata.schema.refresher.SchemaRefresher;
 import 
org.apache.shardingsphere.infra.metadata.schema.refresher.SchemaRefresherFactory;
+import 
org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier;
 import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
+import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.exception.LockWaitTimeoutException;
@@ -56,6 +57,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -66,6 +68,10 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class DatabaseCommunicationEngine {
     
+    static {
+        ShardingSphereServiceLoader.register(SchemaChangedNotifier.class);
+    }
+    
     private final String driverType;
     
     private final ShardingSphereMetaData metaData;
@@ -189,8 +195,7 @@ public final class DatabaseCommunicationEngine {
     }
     
     private void notifySchemaChanged(final String schemaName, final 
ShardingSphereSchema schema) {
-        // TODO need check
-        ShardingSphereEventBus.getInstance().post(new 
SchemaPersistEvent(schemaName, schema));
+        
OrderedSPIRegistry.getRegisteredServices(Collections.singletonList(schema), 
SchemaChangedNotifier.class).values().forEach(each -> each.notify(schemaName, 
schema));
     }
     
     private void mergeUpdateCount(final SQLStatementContext<?> 
sqlStatementContext, final UpdateResponseHeader response) {

Reply via email to