You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by qi...@apache.org on 2021/02/02 09:33:29 UTC
[shardingsphere] branch master updated: Refactor governance
listener event (#9267)
This is an automated email from the ASF dual-hosted git repository.
qiulu 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 caba1ae Refactor governance listener event (#9267)
caba1ae is described below
commit caba1ae9e5612d6bc7588548818d26f29d66eba0
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Tue Feb 2 17:32:58 2021 +0800
Refactor governance listener event (#9267)
* Refactor governance listener event
* Refactor governance listener event
---
.../metadata/GovernanceMetaDataContexts.java | 10 +-
.../metadata/GovernanceMetaDataContextsTest.java | 7 +-
.../governance/core/config/ConfigCenter.java | 38 ++-
.../config/listener/SchemaChangedListener.java | 167 -------------
.../listener/metadata/SchemasChangedListener.java | 4 +-
...taAddedEvent.java => MetaDataCreatedEvent.java} | 15 +-
.../MetaDataDroppedEvent.java} | 9 +-
.../MetaDataPersistedEvent.java} | 8 +-
...maPersistEvent.java => SchemaAlteredEvent.java} | 3 +-
.../notifier/GovernanceSchemaChangedNotifier.java | 4 +-
.../governance/core/config/ConfigCenterTest.java | 26 +-
.../config/listener/SchemaChangedListenerTest.java | 267 ---------------------
.../rdl/impl/CreateDatabaseBackendHandler.java | 4 +-
.../rdl/impl/DropDatabaseBackendHandler.java | 4 +-
14 files changed, 69 insertions(+), 497 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index 0931a49..3061c92 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -23,8 +23,8 @@ import org.apache.shardingsphere.governance.core.event.model.auth.Authentication
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangeCompletedEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.lock.UnlockEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataAddedEvent;
import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDeletedEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataPersistedEvent;
import org.apache.shardingsphere.governance.core.event.model.props.PropertiesChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.schema.SchemaChangedEvent;
@@ -154,13 +154,13 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
}
/**
- * Renew to add new schema.
+ * Renew to persist meta data.
*
- * @param event schema add event
+ * @param event meta data persisted event
* @throws SQLException SQL exception
*/
@Subscribe
- public synchronized void renew(final MetaDataAddedEvent event) throws SQLException {
+ public synchronized void renew(final MetaDataPersistedEvent event) throws SQLException {
Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>(metaDataContexts.getMetaDataMap());
metaDataMap.put(event.getSchemaName(), createAddedMetaData(event));
metaDataContexts = new StandardMetaDataContexts(metaDataMap, metaDataContexts.getExecutorEngine(), metaDataContexts.getAuthentication(), metaDataContexts.getProps());
@@ -289,7 +289,7 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
}
}
- private ShardingSphereMetaData createAddedMetaData(final MetaDataAddedEvent event) throws SQLException {
+ private ShardingSphereMetaData createAddedMetaData(final MetaDataPersistedEvent event) throws SQLException {
String schemaName = event.getSchemaName();
Map<String, Map<String, DataSource>> dataSourcesMap = createDataSourcesMap(Collections.singletonMap(schemaName,
governanceFacade.getConfigCenter().loadDataSourceConfigurations(schemaName)));
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
index 7c1113c..6db48d1 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.governance.context.metadata;
import org.apache.shardingsphere.governance.core.config.ConfigCenter;
import org.apache.shardingsphere.governance.core.event.model.auth.AuthenticationChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangedEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataAddedEvent;
import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDeletedEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataPersistedEvent;
import org.apache.shardingsphere.governance.core.event.model.props.PropertiesChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.schema.SchemaChangedEvent;
@@ -40,8 +40,8 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.event.RuleChangedEvent;
-import org.apache.shardingsphere.test.mock.MockedDataSource;
import org.apache.shardingsphere.replicaquery.rule.ReplicaQueryRule;
+import org.apache.shardingsphere.test.mock.MockedDataSource;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -51,7 +51,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.sql.SQLException;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -135,7 +134,7 @@ public final class GovernanceMetaDataContextsTest {
@Test
public void assertSchemaAdd() throws SQLException {
- MetaDataAddedEvent event = new MetaDataAddedEvent("schema_add", new HashMap<>(), new LinkedList<>());
+ MetaDataPersistedEvent event = new MetaDataPersistedEvent("schema_add");
when(configCenter.loadDataSourceConfigurations("schema_add")).thenReturn(getDataSourceConfigurations());
governanceMetaDataContexts.renew(event);
assertNotNull(governanceMetaDataContexts.getMetaData("schema_add"));
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
index eb6fb3c..a5c9c8a 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
@@ -25,12 +25,13 @@ import org.apache.shardingsphere.governance.core.config.checker.RuleConfiguratio
import org.apache.shardingsphere.governance.core.config.checker.RuleConfigurationCheckerFactory;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourcePersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataCreatedEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDroppedEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationCachedEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsAlteredEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsPersistEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.SwitchRuleConfigurationEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.schema.SchemaAlteredEvent;
import org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter;
import org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfiguration;
import org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfigurationWrap;
@@ -138,29 +139,42 @@ public final class ConfigCenter {
}
/**
- * Persist schema name.
+ * Persist meta data.
*
- * @param event Schema name event.
+ * @param event meta data created event.
*/
@Subscribe
- public synchronized void renew(final SchemaNamePersistEvent event) {
+ public synchronized void renew(final MetaDataCreatedEvent event) {
String schemaNames = repository.get(node.getMetadataNodePath());
Collection<String> schemas = Strings.isNullOrEmpty(schemaNames) ? new LinkedHashSet<>() : new LinkedHashSet<>(Splitter.on(",").splitToList(schemaNames));
- if (event.isDrop()) {
- schemas.remove(event.getSchemaName());
- } else if (!schemas.contains(event.getSchemaName())) {
+ if (!schemas.contains(event.getSchemaName())) {
schemas.add(event.getSchemaName());
+ repository.persist(node.getMetadataNodePath(), Joiner.on(",").join(schemas));
}
- repository.persist(node.getMetadataNodePath(), Joiner.on(",").join(schemas));
}
/**
- * Persist meta data.
+ * Delete meta data.
+ *
+ * @param event meta data dropped event
+ */
+ @Subscribe
+ public synchronized void renew(final MetaDataDroppedEvent event) {
+ String schemaNames = repository.get(node.getMetadataNodePath());
+ Collection<String> schemas = Strings.isNullOrEmpty(schemaNames) ? new LinkedHashSet<>() : new LinkedHashSet<>(Splitter.on(",").splitToList(schemaNames));
+ if (schemas.contains(event.getSchemaName())) {
+ schemas.remove(event.getSchemaName());
+ repository.persist(node.getMetadataNodePath(), Joiner.on(",").join(schemas));
+ }
+ }
+
+ /**
+ * Persist schema.
*
- * @param event Meta data event.
+ * @param event schema altered event.
*/
@Subscribe
- public synchronized void renew(final SchemaPersistEvent event) {
+ public synchronized void renew(final SchemaAlteredEvent event) {
persistSchema(event.getSchemaName(), event.getSchema());
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListener.java
deleted file mode 100644
index 223d688..0000000
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListener.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.governance.core.config.listener;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import org.apache.commons.collections4.SetUtils;
-import org.apache.shardingsphere.governance.core.config.ConfigCenterNode;
-import org.apache.shardingsphere.governance.core.event.listener.PostGovernanceRepositoryEventListener;
-import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangedEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataAddedEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDeletedEvent;
-import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationCachedEvent;
-import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfigurationWrap;
-import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
-import org.apache.shardingsphere.governance.core.yaml.swapper.DataSourceConfigurationYamlSwapper;
-import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
-import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
-import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Schema changed listener.
- */
-public final class SchemaChangedListener extends PostGovernanceRepositoryEventListener<GovernanceEvent> {
-
- private final ConfigCenterNode configurationNode;
-
- private final Collection<String> existedSchemaNames;
-
- public SchemaChangedListener(final ConfigurationRepository configurationRepository, final Collection<String> schemaNames) {
- super(configurationRepository, new ConfigCenterNode().getAllSchemaConfigPaths(schemaNames));
- configurationNode = new ConfigCenterNode();
- existedSchemaNames = new LinkedHashSet<>(schemaNames);
- }
-
- @Override
- protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
- // TODO Consider removing the following one.
- if (configurationNode.getMetadataNodePath().equals(event.getKey())) {
- return createSchemaNamesUpdatedEvent(event.getValue());
- }
- String schemaName = configurationNode.getSchemaName(event.getKey());
- if (Strings.isNullOrEmpty(schemaName) || !isValidNodeChangedEvent(schemaName, event.getKey())) {
- return Optional.empty();
- }
- if (Type.ADDED == event.getType()) {
- if (event.getKey().startsWith(configurationNode.getCachePath(configurationNode.getRulePath(schemaName)))) {
- return Optional.of(createRuleConfigurationCachedEvent(schemaName, event));
- }
- return Optional.of(createAddedEvent(schemaName));
- }
- if (Type.UPDATED == event.getType()) {
- return Optional.of(createUpdatedEvent(schemaName, event));
- }
- if (Type.DELETED == event.getType()) {
- if (event.getKey().startsWith(configurationNode.getCachePath(configurationNode.getRulePath(schemaName)))) {
- return Optional.empty();
- }
- existedSchemaNames.remove(schemaName);
- return Optional.of(new MetaDataDeletedEvent(schemaName));
- }
- return Optional.empty();
- }
-
- private Optional<GovernanceEvent> createSchemaNamesUpdatedEvent(final String schemaNames) {
- Collection<String> persistedSchemaNames = configurationNode.splitSchemaName(schemaNames);
- Set<String> addedSchemaNames = SetUtils.difference(new HashSet<>(persistedSchemaNames), new HashSet<>(existedSchemaNames));
- if (!addedSchemaNames.isEmpty()) {
- return Optional.of(createAddedEvent(addedSchemaNames.iterator().next()));
- }
- Set<String> deletedSchemaNames = SetUtils.difference(new HashSet<>(existedSchemaNames), new HashSet<>(persistedSchemaNames));
- if (!deletedSchemaNames.isEmpty()) {
- String schemaName = deletedSchemaNames.iterator().next();
- existedSchemaNames.remove(schemaName);
- return Optional.of(new MetaDataDeletedEvent(schemaName));
- }
- return Optional.empty();
- }
-
- private boolean isValidNodeChangedEvent(final String schemaName, final String nodeFullPath) {
- return !existedSchemaNames.contains(schemaName) || configurationNode.getDataSourcePath(schemaName).equals(nodeFullPath)
- || configurationNode.getRulePath(schemaName).equals(nodeFullPath)
- || configurationNode.getSchemaPath(schemaName).equals(nodeFullPath)
- || nodeFullPath.startsWith(configurationNode.getCachePath(configurationNode.getRulePath(schemaName)));
- }
-
- private GovernanceEvent createAddedEvent(final String schemaName) {
- existedSchemaNames.add(schemaName);
- return new MetaDataAddedEvent(schemaName, Collections.emptyMap(), Collections.emptyList());
- }
-
- private GovernanceEvent createUpdatedEvent(final String schemaName, final DataChangedEvent event) {
- // TODO Consider remove judgement.
- return existedSchemaNames.contains(schemaName) ? createUpdatedEventForExistedSchema(schemaName, event) : createAddedEvent(schemaName);
- }
-
- private GovernanceEvent createUpdatedEventForExistedSchema(final String schemaName, final DataChangedEvent event) {
- if (event.getKey().equals(configurationNode.getDataSourcePath(schemaName))) {
- return createDataSourceChangedEvent(schemaName, event);
- } else if (event.getKey().equals(configurationNode.getRulePath(schemaName))) {
- return createRuleChangedEvent(schemaName, event);
- }
- return createSchemaChangedEvent(schemaName, event);
- }
-
- private DataSourceChangedEvent createDataSourceChangedEvent(final String schemaName, final DataChangedEvent event) {
- YamlDataSourceConfigurationWrap result = YamlEngine.unmarshal(event.getValue(), YamlDataSourceConfigurationWrap.class);
- Preconditions.checkState(null != result && !result.getDataSources().isEmpty(), "No available data sources to load for governance.");
- return new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
- .collect(Collectors.toMap(Entry::getKey, entry -> new DataSourceConfigurationYamlSwapper().swapToObject(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
- }
-
- private GovernanceEvent createRuleChangedEvent(final String schemaName, final DataChangedEvent event) {
- return new RuleConfigurationsChangedEvent(schemaName, getRuleConfigurations(event.getValue()));
- }
-
- private GovernanceEvent createSchemaChangedEvent(final String schemaName, final DataChangedEvent event) {
- return new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class)));
- }
-
- private GovernanceEvent createRuleConfigurationCachedEvent(final String schemaName, final DataChangedEvent event) {
- return new RuleConfigurationCachedEvent(getCacheId(event.getKey()), schemaName);
- }
-
- private String getCacheId(final String path) {
- return path.substring(path.lastIndexOf('/') + 1);
- }
-
- private Collection<RuleConfiguration> getRuleConfigurations(final String yamlContent) {
- YamlRootRuleConfigurations configurations = YamlEngine.unmarshal(yamlContent, YamlRootRuleConfigurations.class);
- Preconditions.checkState(null != configurations, "No available rule to load for governance.");
- return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(configurations.getRules());
- }
-}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/SchemasChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/SchemasChangedListener.java
index 2b2b6f8..0e461de 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/SchemasChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/SchemasChangedListener.java
@@ -21,8 +21,8 @@ import org.apache.commons.collections4.SetUtils;
import org.apache.shardingsphere.governance.core.config.ConfigCenterNode;
import org.apache.shardingsphere.governance.core.event.listener.PostGovernanceRepositoryEventListener;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataAddedEvent;
import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDeletedEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataPersistedEvent;
import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
@@ -69,7 +69,7 @@ public final class SchemasChangedListener extends PostGovernanceRepositoryEventL
private GovernanceEvent createAddedEvent(final String schemaName) {
existedSchemaNames.add(schemaName);
- return new MetaDataAddedEvent(schemaName, Collections.emptyMap(), Collections.emptyList());
+ return new MetaDataPersistedEvent(schemaName);
}
private GovernanceEvent createDeletedEvent(final String schemaName) {
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataAddedEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataCreatedEvent.java
similarity index 65%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataAddedEvent.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataCreatedEvent.java
index fb1a83f..b928e51 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataAddedEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataCreatedEvent.java
@@ -20,23 +20,12 @@ package org.apache.shardingsphere.governance.core.event.model.metadata;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
-
-import java.util.Collection;
-import java.util.Map;
-
/**
- * Meta data added event.
+ * Meta data created event.
*/
@RequiredArgsConstructor
@Getter
-public final class MetaDataAddedEvent implements GovernanceEvent {
+public final class MetaDataCreatedEvent {
private final String schemaName;
-
- private final Map<String, DataSourceConfiguration> dataSourceConfigurations;
-
- private final Collection<RuleConfiguration> ruleConfigurations;
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataDroppedEvent.java
similarity index 76%
copy from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java
copy to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataDroppedEvent.java
index 748b40e..61cc5fd 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataDroppedEvent.java
@@ -15,20 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.governance.core.event.model.schema;
+package org.apache.shardingsphere.governance.core.event.model.metadata;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
/**
- * Schema name persist event.
+ * Meta data dropped event.
*/
@RequiredArgsConstructor
@Getter
-public final class SchemaNamePersistEvent implements GovernanceEvent {
+public final class MetaDataDroppedEvent {
private final String schemaName;
-
- private final boolean isDrop;
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataPersistedEvent.java
similarity index 83%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataPersistedEvent.java
index 748b40e..aa669bd 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaNamePersistEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/metadata/MetaDataPersistedEvent.java
@@ -15,20 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.governance.core.event.model.schema;
+package org.apache.shardingsphere.governance.core.event.model.metadata;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
/**
- * Schema name persist event.
+ * Meta data persisted event.
*/
@RequiredArgsConstructor
@Getter
-public final class SchemaNamePersistEvent implements GovernanceEvent {
+public final class MetaDataPersistedEvent implements GovernanceEvent {
private final String schemaName;
-
- private final boolean isDrop;
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaPersistEvent.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaAlteredEvent.java
similarity index 89%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaPersistEvent.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaAlteredEvent.java
index c4d616a..def429e 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaPersistEvent.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/model/schema/SchemaAlteredEvent.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.governance.core.event.model.schema;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
/**
@@ -27,7 +26,7 @@ import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
*/
@RequiredArgsConstructor
@Getter
-public final class SchemaPersistEvent implements GovernanceEvent {
+public final class SchemaAlteredEvent {
private final String schemaName;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
index 3204ef5..badfc0b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/event/notifier/GovernanceSchemaChangedNotifier.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.governance.core.event.notifier;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.schema.SchemaAlteredEvent;
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;
@@ -29,7 +29,7 @@ public final class GovernanceSchemaChangedNotifier implements SchemaChangedNotif
@Override
public void notify(final String name, final ShardingSphereSchema schema) {
- ShardingSphereEventBus.getInstance().post(new SchemaPersistEvent(name, schema));
+ ShardingSphereEventBus.getInstance().post(new SchemaAlteredEvent(name, schema));
}
@Override
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
index 30082dd..20039c2 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
@@ -21,10 +21,11 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceAlteredEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourcePersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataCreatedEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDroppedEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsPersistEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.SwitchRuleConfigurationEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.schema.SchemaAlteredEvent;
import org.apache.shardingsphere.governance.core.yaml.config.YamlRuleConfigurationWrap;
import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
@@ -516,7 +517,7 @@ public final class ConfigCenterTest {
@Test
public void assertRenewSchemaNameEventWithDrop() {
- SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", true);
+ MetaDataDroppedEvent event = new MetaDataDroppedEvent("sharding_db");
when(configurationRepository.get("/metadata")).thenReturn("sharding_db,replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
@@ -524,8 +525,17 @@ public final class ConfigCenterTest {
}
@Test
+ public void assertRenewSchemaNameEventWithDropAndNotExist() {
+ MetaDataDroppedEvent event = new MetaDataDroppedEvent("sharding_db");
+ when(configurationRepository.get("/metadata")).thenReturn("replica_query_db");
+ ConfigCenter configCenter = new ConfigCenter(configurationRepository);
+ configCenter.renew(event);
+ verify(configurationRepository, times(0)).persist(eq("/metadata"), eq("replica_query_db"));
+ }
+
+ @Test
public void assertRenewSchemaNameEventWithAdd() {
- SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", false);
+ MetaDataCreatedEvent event = new MetaDataCreatedEvent("sharding_db");
when(configurationRepository.get("/metadata")).thenReturn("replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
@@ -534,11 +544,11 @@ public final class ConfigCenterTest {
@Test
public void assertRenewSchemaNameEventWithAddAndExist() {
- SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", false);
+ MetaDataCreatedEvent event = new MetaDataCreatedEvent("sharding_db");
when(configurationRepository.get("/metadata")).thenReturn("sharding_db,replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
- verify(configurationRepository).persist(eq("/metadata"), eq("sharding_db,replica_query_db"));
+ verify(configurationRepository, times(0)).persist(eq("/metadata"), eq("sharding_db,replica_query_db"));
}
@Test
@@ -566,8 +576,8 @@ public final class ConfigCenterTest {
}
@Test
- public void assertRenewSchemaPersistEvent() {
- SchemaPersistEvent event = new SchemaPersistEvent("sharding_db", new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAML), YamlSchema.class)));
+ public void assertRenewSchemaAlteredEvent() {
+ SchemaAlteredEvent event = new SchemaAlteredEvent("sharding_db", new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAML), YamlSchema.class)));
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
verify(configurationRepository).persist(eq("/metadata/sharding_db/schema"), anyString());
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListenerTest.java
deleted file mode 100644
index b023e9a..0000000
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/listener/SchemaChangedListenerTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.governance.core.config.listener;
-
-import lombok.SneakyThrows;
-import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
-import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangedEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataAddedEvent;
-import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDeletedEvent;
-import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
-import org.apache.shardingsphere.replicaquery.api.config.ReplicaQueryRuleConfiguration;
-import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-@RunWith(MockitoJUnitRunner.class)
-public final class SchemaChangedListenerTest {
-
- private static final String DATA_SOURCE_FILE = "yaml/data-source.yaml";
-
- private static final String SHARDING_RULE_FILE = "yaml/sharding-rule.yaml";
-
- private static final String REPLICA_QUERY_RULE_FILE = "yaml/replica-query-rule.yaml";
-
- private static final String ENCRYPT_RULE_FILE = "yaml/encrypt-rule.yaml";
-
- private static final String META_DATA_FILE = "yaml/schema.yaml";
-
- private SchemaChangedListener schemaChangedListener;
-
- @Mock
- private ConfigurationRepository configurationRepository;
-
- @Before
- public void setUp() {
- schemaChangedListener = new SchemaChangedListener(configurationRepository, Arrays.asList("sharding_db", "replica_query_db", "encrypt_db"));
- }
-
- @Test
- public void assertCreateIgnoredEvent() {
- assertFalse(schemaChangedListener.createEvent(new DataChangedEvent("/metadata/encrypt_db", "test", Type.UPDATED)).isPresent());
- assertFalse(schemaChangedListener.createEvent(new DataChangedEvent("/metadata/encrypt_db/rule", "test", Type.IGNORED)).isPresent());
- }
-
- @Test
- public void assertCreateDataSourceChangedEventForExistedSchema() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/sharding_db/datasource", dataSource, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(actual.get(), instanceOf(DataSourceChangedEvent.class));
- assertThat(((DataSourceChangedEvent) actual.get()).getSchemaName(), is("sharding_db"));
- }
-
- @Test
- public void assertCreateRuleConfigurationsChangedEventForExistedSchema() {
- String shardingRule = readYAML(SHARDING_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/sharding_db/rule", shardingRule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((RuleConfigurationsChangedEvent) actual.get()).getSchemaName(), is("sharding_db"));
- Collection<RuleConfiguration> ruleConfigs = ((RuleConfigurationsChangedEvent) actual.get()).getRuleConfigurations();
- assertThat(ruleConfigs.size(), is(1));
- assertThat(((ShardingRuleConfiguration) ruleConfigs.iterator().next()).getTables().size(), is(1));
- }
-
- @Test
- public void assertCreateReplicaQueryRuleChangedEventForExistedSchema() {
- String rule = readYAML(REPLICA_QUERY_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/replica_query_db/rule", rule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- RuleConfigurationsChangedEvent event = (RuleConfigurationsChangedEvent) actual.get();
- assertThat(event.getSchemaName(), is("replica_query_db"));
- assertThat(event.getRuleConfigurations().iterator().next(), instanceOf(ReplicaQueryRuleConfiguration.class));
- ReplicaQueryRuleConfiguration ruleConfig = (ReplicaQueryRuleConfiguration) event.getRuleConfigurations().iterator().next();
- assertThat(ruleConfig.getDataSources().iterator().next().getPrimaryDataSourceName(), is("primary_ds"));
- }
-
- @Test
- public void assertCreateEncryptRuleChangedEventForExistedSchema() {
- String encryptRule = readYAML(ENCRYPT_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/encrypt_db/rule", encryptRule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- RuleConfigurationsChangedEvent event = (RuleConfigurationsChangedEvent) actual.get();
- assertThat(event.getSchemaName(), is("encrypt_db"));
- assertThat(event.getRuleConfigurations().iterator().next(), instanceOf(EncryptRuleConfiguration.class));
- EncryptRuleConfiguration encryptRuleConfig = (EncryptRuleConfiguration) event.getRuleConfigurations().iterator().next();
- assertThat(encryptRuleConfig.getEncryptors().size(), is(1));
- ShardingSphereAlgorithmConfiguration encryptAlgorithmConfig = encryptRuleConfig.getEncryptors().get("order_encryptor");
- assertThat(encryptAlgorithmConfig.getType(), is("AES"));
- assertThat(encryptAlgorithmConfig.getProps().get("aes-key-value"), is(123456));
- }
-
- @Test
- public void assertCreateIgnoredGovernanceEventForNewSchema() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/rule", "rule", Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(actual.get(), instanceOf(MetaDataAddedEvent.class));
- }
-
- @Test
- public void assertCreateSchemaAddedEventForNewSchema() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/datasource", dataSource, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateReplicaQuerySchemaAddedEventForNewSchema() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/datasource", dataSource, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateEncryptSchemaAddedEventForNewSchema() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/datasource", dataSource, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateSchemaDeletedEventForNewSchema() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/datasource", dataSource, Type.DELETED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataDeletedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateWithSchemaDeletedEvent() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db", dataSource, Type.DELETED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(actual.get(), instanceOf(MetaDataDeletedEvent.class));
- }
-
- @Test
- public void assertCreateWithSchemaDeletedEventWithDataSourceNode() {
- String dataSource = readYAML(DATA_SOURCE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/datasource", dataSource, Type.DELETED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(actual.get(), instanceOf(MetaDataDeletedEvent.class));
- }
-
- @Test
- public void assertCreateAddedEventWithEncryptRuleConfigurationForNewSchema() {
- String encryptRule = readYAML(ENCRYPT_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/rule", encryptRule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateAddedEventWithShardingRuleConfigurationForNewSchema() {
- String shardingRule = readYAML(SHARDING_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/rule", shardingRule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateAddedEventWithReplicaQueryRuleConfigurationForNewSchema() {
- String rule = readYAML(REPLICA_QUERY_RULE_FILE);
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/logic_db/rule", rule, Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("logic_db"));
- }
-
- @Test
- public void assertCreateSchemaNamesUpdatedEventForAdd() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db,encrypt_db,shadow_db", Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("shadow_db"));
- }
-
- @Test
- public void assertCreateSchemaNamesUpdatedEventForDelete() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db", Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataDeletedEvent) actual.get()).getSchemaName(), is("encrypt_db"));
- }
-
- @Test
- public void assertCreateSchemaNamesUpdatedEventForIgnore() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db,encrypt_db", Type.UPDATED);
- assertFalse(schemaChangedListener.createEvent(dataChangedEvent).isPresent());
- }
-
- @Test
- public void assertCreateSchemaNameAddEvent() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/shadow_db", "", Type.ADDED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertThat(((MetaDataAddedEvent) actual.get()).getSchemaName(), is("shadow_db"));
- }
-
- @Test
- public void assertCreateSchemaChangedEvent() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata/sharding_db/schema", readYAML(META_DATA_FILE), Type.UPDATED);
- Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
- assertTrue(actual.isPresent());
- assertTrue(((SchemaChangedEvent) actual.get()).getSchema().getAllTableNames().contains("t_order"));
- }
-
- @SneakyThrows({IOException.class, URISyntaxException.class})
- private String readYAML(final String yamlFile) {
- return Files.readAllLines(Paths.get(ClassLoader.getSystemResource(yamlFile).toURI())).stream().map(each -> each + System.lineSeparator()).collect(Collectors.joining());
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseBackendHandler.java
index d16bd73..8ac9518 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateDatabaseBackendHandler.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataCreatedEvent;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.DBCreateExistsException;
@@ -50,6 +50,6 @@ public final class CreateDatabaseBackendHandler implements TextProtocolBackendHa
private void post(final CreateDatabaseStatement sqlStatement) {
// TODO Need to get the executed feedback from registry center for returning.
- ShardingSphereEventBus.getInstance().post(new SchemaNamePersistEvent(sqlStatement.getDatabaseName(), false));
+ ShardingSphereEventBus.getInstance().post(new MetaDataCreatedEvent(sqlStatement.getDatabaseName()));
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseBackendHandler.java
index 63354b3..cb0ba67 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropDatabaseBackendHandler.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
+import org.apache.shardingsphere.governance.core.event.model.metadata.MetaDataDroppedEvent;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.DBCreateExistsException;
@@ -50,6 +50,6 @@ public final class DropDatabaseBackendHandler implements TextProtocolBackendHand
private void post(final DropDatabaseStatement sqlStatement) {
// TODO Need to get the executed feedback from registry center for returning.
- ShardingSphereEventBus.getInstance().post(new SchemaNamePersistEvent(sqlStatement.getDatabaseName(), true));
+ ShardingSphereEventBus.getInstance().post(new MetaDataDroppedEvent(sqlStatement.getDatabaseName()));
}
}