You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by xi...@apache.org on 2021/01/12 08:06:09 UTC
[shardingsphere] branch master updated: Refactor governance event
listener (#8993)
This is an automated email from the ASF dual-hosted git repository.
xiaoyu 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 931c808 Refactor governance event listener (#8993)
931c808 is described below
commit 931c8089d489e2216fa7243aacfcc5d176a824f4
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Tue Jan 12 16:05:40 2021 +0800
Refactor governance event listener (#8993)
* Modify event type for drop resource
* Refactor governance event listener
---
.../governance/core/config/ConfigCenter.java | 12 ++++++------
.../governance/core/config/ConfigCenterNode.java | 14 ++++++++++++--
.../config/listener/SchemaChangedListener.java | 2 +-
.../core/config/ConfigCenterNodeTest.java | 5 ++---
.../governance/core/config/ConfigCenterTest.java | 22 +++++++++++-----------
.../config/listener/SchemaChangedListenerTest.java | 6 +++---
.../zookeeper/CuratorZookeeperRepository.java | 3 +--
.../impl/GovernanceBootstrapInitializerTest.java | 2 +-
8 files changed, 37 insertions(+), 29 deletions(-)
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 fa37bc9..6ace568 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
@@ -145,14 +145,14 @@ public final class ConfigCenter {
*/
@Subscribe
public synchronized void renew(final SchemaNamePersistEvent event) {
- String schemaNames = repository.get(node.getMetadataNodePath());
+ String schemaNames = repository.get(node.getSchemasNodePath());
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())) {
schemas.add(event.getSchemaName());
}
- repository.persist(node.getMetadataNodePath(), Joiner.on(",").join(schemas));
+ repository.persist(node.getSchemasNodePath(), Joiner.on(",").join(schemas));
}
/**
@@ -269,9 +269,9 @@ public final class ConfigCenter {
}
private void persistSchemaName(final String schemaName) {
- String schemaNames = repository.get(node.getMetadataNodePath());
+ String schemaNames = repository.get(node.getSchemasNodePath());
if (Strings.isNullOrEmpty(schemaNames)) {
- repository.persist(node.getMetadataNodePath(), schemaName);
+ repository.persist(node.getSchemasNodePath(), schemaName);
return;
}
List<String> schemaNameList = Splitter.on(",").splitToList(schemaNames);
@@ -280,7 +280,7 @@ public final class ConfigCenter {
}
List<String> newArrayList = new ArrayList<>(schemaNameList);
newArrayList.add(schemaName);
- repository.persist(node.getMetadataNodePath(), Joiner.on(",").join(newArrayList));
+ repository.persist(node.getSchemasNodePath(), Joiner.on(",").join(newArrayList));
}
/**
@@ -335,7 +335,7 @@ public final class ConfigCenter {
* @return all schema names
*/
public Collection<String> getAllSchemaNames() {
- String schemaNames = repository.get(node.getMetadataNodePath());
+ String schemaNames = repository.get(node.getSchemasNodePath());
return Strings.isNullOrEmpty(schemaNames) ? new LinkedList<>() : node.splitSchemaName(schemaNames);
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNode.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNode.java
index 762021f..dc94fda 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNode.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNode.java
@@ -36,6 +36,8 @@ public final class ConfigCenterNode {
private static final String METADATA_NODE = "metadata";
+ private static final String SCHEMAS_NODE = "schemas";
+
private static final String DATA_SOURCE_NODE = "datasource";
private static final String RULE_NODE = "rule";
@@ -156,9 +158,8 @@ public final class ConfigCenterNode {
* @return config paths list.
*/
public Collection<String> getAllSchemaConfigPaths(final Collection<String> schemaNames) {
- Collection<String> result = new ArrayList<>(Collections.singletonList(getMetadataNodePath()));
+ Collection<String> result = new ArrayList<>(Collections.singleton(getSchemasNodePath()));
for (String schemaName : schemaNames) {
- result.add(getSchemaNamePath(schemaName));
result.add(getRulePath(schemaName));
result.add(getDataSourcePath(schemaName));
result.add(getSchemaPath(schemaName));
@@ -175,4 +176,13 @@ public final class ConfigCenterNode {
public String getCachePath(final String path) {
return Joiner.on(PATH_SEPARATOR).join(path, CACHE_NODE);
}
+
+ /**
+ * Get schemas node path.
+ *
+ * @return schemas node path.
+ */
+ public String getSchemasNodePath() {
+ return Joiner.on(PATH_SEPARATOR).join("", SCHEMAS_NODE);
+ }
}
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
index 52f82e7..854908b 100644
--- 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
@@ -69,7 +69,7 @@ public final class SchemaChangedListener extends PostGovernanceRepositoryEventLi
@Override
protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
// TODO Consider removing the following one.
- if (configurationNode.getMetadataNodePath().equals(event.getKey())) {
+ if (configurationNode.getSchemasNodePath().equals(event.getKey())) {
return createSchemaNamesUpdatedEvent(event.getValue());
}
String schemaName = configurationNode.getSchemaName(event.getKey());
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNodeTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNodeTest.java
index d3226ca..39e42c3 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNodeTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterNodeTest.java
@@ -59,9 +59,8 @@ public final class ConfigCenterNodeTest {
@Test
public void assertGetAllSchemaConfigPaths() {
Collection<String> actual = configurationNode.getAllSchemaConfigPaths(Collections.singletonList(DefaultSchema.LOGIC_NAME));
- assertThat(actual.size(), is(5));
- assertThat(actual, hasItems("/metadata"));
- assertThat(actual, hasItems("/metadata/logic_db"));
+ assertThat(actual.size(), is(4));
+ assertThat(actual, hasItems("/schemas"));
assertThat(actual, hasItems("/metadata/logic_db/rule"));
assertThat(actual, hasItems("/metadata/logic_db/datasource"));
assertThat(actual, hasItems("/metadata/logic_db/schema"));
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 229ab18..f93b736 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
@@ -438,7 +438,7 @@ public final class ConfigCenterTest {
@Test
public void assertGetAllSchemaNames() {
- when(configurationRepository.get("/metadata")).thenReturn("sharding_db,replica_query_db");
+ when(configurationRepository.get("/schemas")).thenReturn("sharding_db,replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
Collection<String> actual = configCenter.getAllSchemaNames();
assertThat(actual.size(), is(2));
@@ -483,17 +483,17 @@ public final class ConfigCenterTest {
@Test
public void assertPersistSchemaNameWithExistSchema() {
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
- when(configurationRepository.get("/metadata")).thenReturn("sharding_db");
+ when(configurationRepository.get("/schemas")).thenReturn("sharding_db");
configCenter.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), true);
- verify(configurationRepository, times(0)).persist(eq("/metadata"), eq("sharding_db"));
+ verify(configurationRepository, times(0)).persist(eq("/schemas"), eq("sharding_db"));
}
@Test
public void assertPersistSchemaNameWithExistAndNewSchema() {
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
- when(configurationRepository.get("/metadata")).thenReturn("replica_query_db");
+ when(configurationRepository.get("/schemas")).thenReturn("replica_query_db");
configCenter.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), true);
- verify(configurationRepository).persist(eq("/metadata"), eq("replica_query_db,sharding_db"));
+ verify(configurationRepository).persist(eq("/schemas"), eq("replica_query_db,sharding_db"));
}
@Test
@@ -515,28 +515,28 @@ public final class ConfigCenterTest {
@Test
public void assertRenewSchemaNameEventWithDrop() {
SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", true);
- when(configurationRepository.get("/metadata")).thenReturn("sharding_db,replica_query_db");
+ when(configurationRepository.get("/schemas")).thenReturn("sharding_db,replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
- verify(configurationRepository).persist(eq("/metadata"), eq("replica_query_db"));
+ verify(configurationRepository).persist(eq("/schemas"), eq("replica_query_db"));
}
@Test
public void assertRenewSchemaNameEventWithAdd() {
SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", false);
- when(configurationRepository.get("/metadata")).thenReturn("replica_query_db");
+ when(configurationRepository.get("/schemas")).thenReturn("replica_query_db");
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.renew(event);
- verify(configurationRepository).persist(eq("/metadata"), eq("replica_query_db,sharding_db"));
+ verify(configurationRepository).persist(eq("/schemas"), eq("replica_query_db,sharding_db"));
}
@Test
public void assertRenewSchemaNameEventWithAddAndExist() {
SchemaNamePersistEvent event = new SchemaNamePersistEvent("sharding_db", false);
- when(configurationRepository.get("/metadata")).thenReturn("sharding_db,replica_query_db");
+ when(configurationRepository.get("/schemas")).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).persist(eq("/schemas"), eq("sharding_db,replica_query_db"));
}
@Test
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
index b023e9a..0acf8d9 100644
--- 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
@@ -224,7 +224,7 @@ public final class SchemaChangedListenerTest {
@Test
public void assertCreateSchemaNamesUpdatedEventForAdd() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db,encrypt_db,shadow_db", Type.UPDATED);
+ DataChangedEvent dataChangedEvent = new DataChangedEvent("/schemas", "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"));
@@ -232,7 +232,7 @@ public final class SchemaChangedListenerTest {
@Test
public void assertCreateSchemaNamesUpdatedEventForDelete() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db", Type.UPDATED);
+ DataChangedEvent dataChangedEvent = new DataChangedEvent("/schemas", "sharding_db,replica_query_db", Type.UPDATED);
Optional<GovernanceEvent> actual = schemaChangedListener.createEvent(dataChangedEvent);
assertTrue(actual.isPresent());
assertThat(((MetaDataDeletedEvent) actual.get()).getSchemaName(), is("encrypt_db"));
@@ -240,7 +240,7 @@ public final class SchemaChangedListenerTest {
@Test
public void assertCreateSchemaNamesUpdatedEventForIgnore() {
- DataChangedEvent dataChangedEvent = new DataChangedEvent("/metadata", "sharding_db,replica_query_db,encrypt_db", Type.UPDATED);
+ DataChangedEvent dataChangedEvent = new DataChangedEvent("/schemas", "sharding_db,replica_query_db,encrypt_db", Type.UPDATED);
assertFalse(schemaChangedListener.createEvent(dataChangedEvent).isPresent());
}
diff --git a/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-zookeeper-curator/src/main/java/org/apache/shardingsphere/governance/repository/zookeeper/CuratorZookeeperRepository.java b/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-zookeeper-curator/src/main/java/org/apache/shardingsphere/govern [...]
index 30a12e1..8dd6414 100644
--- a/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-zookeeper-curator/src/main/java/org/apache/shardingsphere/governance/repository/zookeeper/CuratorZookeeperRepository.java
+++ b/shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-zookeeper-curator/src/main/java/org/apache/shardingsphere/governance/repository/zookeeper/CuratorZookeeperRepository.java
@@ -26,7 +26,6 @@ import org.apache.curator.framework.api.ACLProvider;
import org.apache.curator.framework.api.transaction.TransactionOp;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.CuratorCache;
-import org.apache.curator.framework.recipes.cache.CuratorCache.Options;
import org.apache.curator.framework.recipes.cache.CuratorCacheListener;
import org.apache.curator.framework.recipes.locks.InterProcessLock;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
@@ -249,7 +248,7 @@ public final class CuratorZookeeperRepository implements ConfigurationRepository
}
private void addCacheData(final String cachePath) {
- CuratorCache cache = CuratorCache.build(client, cachePath, Options.SINGLE_NODE_CACHE);
+ CuratorCache cache = CuratorCache.build(client, cachePath);
try {
cache.start();
// CHECKSTYLE:OFF
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
index 5f50481..634c36b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
@@ -87,7 +87,7 @@ public final class GovernanceBootstrapInitializerTest extends AbstractBootstrapI
ConfigCenterNode node = new ConfigCenterNode();
configurationRepository.persist(node.getAuthenticationPath(), readYAML(AUTHENTICATION_YAML));
configurationRepository.persist(node.getPropsPath(), readYAML(PROPS_YAML));
- configurationRepository.persist(node.getMetadataNodePath(), "db");
+ configurationRepository.persist(node.getSchemasNodePath(), "db");
configurationRepository.persist(node.getDataSourcePath("db"), readYAML(DATA_SOURCE_YAML));
configurationRepository.persist(node.getRulePath("db"), readYAML(SHARDING_RULE_YAML));
}