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) {