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));
     }