You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/08/31 11:05:13 UTC
[shardingsphere] branch master updated: Refactor registry center
node listeners
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 cbc908a Refactor registry center node listeners
new f90bdbd Merge pull request #7185 from menghaoranss/issue7108-2
cbc908a is described below
commit cbc908a289fbb9f1560311478fb53f68c69b4209
Author: menghaoranss <lo...@163.com>
AuthorDate: Mon Aug 31 19:00:51 2020 +0800
Refactor registry center node listeners
---
.../core/facade/listener/GovernanceListenerManager.java | 2 +-
.../governance/core/registry/RegistryCenterNode.java | 9 +++++++--
.../listener/DataSourceStateChangedListener.java | 16 ++++++++--------
.../core/registry/listener/RegistryListenerManager.java | 6 ++++--
.../governance/core/registry/RegistryCenterNodeTest.java | 2 +-
.../listener/DataSourceStateChangedListenerTest.java | 5 +++--
.../registry/listener/RegistryListenerManagerTest.java | 4 +++-
7 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
index 639ff88..cee3349 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
@@ -38,7 +38,7 @@ public final class GovernanceListenerManager {
public GovernanceListenerManager(final RegistryRepository registryRepository, final ConfigurationRepository configurationRepository, final Collection<String> schemaNames) {
configurationListenerManager = new ConfigurationListenerManager(configurationRepository, schemaNames);
- registryListenerManager = new RegistryListenerManager(registryRepository);
+ registryListenerManager = new RegistryListenerManager(registryRepository, schemaNames);
metaDataListenerManager = new MetaDataListenerManager(configurationRepository, schemaNames);
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
index 6fa1130..fe1889d 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
@@ -23,6 +23,9 @@ import org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchem
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* Registry center node.
@@ -82,8 +85,10 @@ public final class RegistryCenterNode {
* @param dataSourceNodeFullPath data source node full path
* @return governance sharding schema
*/
- public GovernanceSchema getGovernanceShardingSchema(final String dataSourceNodeFullPath) {
- return new GovernanceSchema(dataSourceNodeFullPath.replace(getDataSourcesNodeFullRootPath() + '/', ""));
+ public Optional<GovernanceSchema> getGovernanceShardingSchema(final String dataSourceNodeFullPath) {
+ Pattern pattern = Pattern.compile(getDataSourcesNodeFullRootPath() + "/" + "(\\w+)/(\\w+)$", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(dataSourceNodeFullPath);
+ return matcher.find() ? Optional.of(new GovernanceSchema(matcher.group(1), matcher.group(2))) : Optional.empty();
}
/**
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
index ca2c929..a84da32 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.ChangedType;
-import java.util.Collections;
+import java.util.Collection;
import java.util.Optional;
/**
@@ -37,18 +37,18 @@ public final class DataSourceStateChangedListener extends PostGovernanceReposito
private final RegistryCenterNode registryCenterNode;
- public DataSourceStateChangedListener(final RegistryRepository registryRepository) {
- super(registryRepository, Collections.singleton(new RegistryCenterNode().getDataSourcesNodeFullRootPath()));
+ public DataSourceStateChangedListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
+ super(registryRepository, new RegistryCenterNode().getAllDataSourcesSchemaPaths(schemaNames));
registryCenterNode = new RegistryCenterNode();
}
@Override
protected Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
- return Optional.of(new DisabledStateChangedEvent(getShardingSchema(event.getKey()), isDataSourceDisabled(event)));
- }
-
- private GovernanceSchema getShardingSchema(final String dataSourceNodeFullPath) {
- return registryCenterNode.getGovernanceShardingSchema(dataSourceNodeFullPath);
+ Optional<GovernanceSchema> governanceSchema = registryCenterNode.getGovernanceShardingSchema(event.getKey());
+ if (governanceSchema.isPresent()) {
+ return Optional.of(new DisabledStateChangedEvent(governanceSchema.get(), isDataSourceDisabled(event)));
+ }
+ return Optional.empty();
}
private boolean isDataSourceDisabled(final DataChangedEvent event) {
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
index 4da8d19..2e2c985 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.governance.core.registry.listener;
import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.ChangedType;
+import java.util.Collection;
+
/**
* Registry listener manager.
*/
@@ -29,9 +31,9 @@ public final class RegistryListenerManager {
private final DataSourceStateChangedListener dataSourceStateChangedListener;
- public RegistryListenerManager(final RegistryRepository registryRepository) {
+ public RegistryListenerManager(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
instanceStateChangedListener = new InstanceStateChangedListener(registryRepository);
- dataSourceStateChangedListener = new DataSourceStateChangedListener(registryRepository);
+ dataSourceStateChangedListener = new DataSourceStateChangedListener(registryRepository, schemaNames);
}
/**
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
index 1928378..6e3747f 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
@@ -42,7 +42,7 @@ public final class RegistryCenterNodeTest {
@Test
public void assertGetGovernanceShardingSchema() {
- assertThat(registryCenterNode.getGovernanceShardingSchema("/registry/datasources/master_slave_db.slave_ds_0").getSchemaName(), is("master_slave_db"));
+ assertThat(registryCenterNode.getGovernanceShardingSchema("/registry/datasources/master_slave_db/slave_ds_0").get().getSchemaName(), is("master_slave_db"));
}
@Test
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
index 23a1356..727cc55 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
@@ -29,6 +29,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import java.util.Arrays;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
@@ -45,13 +46,13 @@ public final class DataSourceStateChangedListenerTest {
@Before
public void setUp() {
- dataSourceStateChangedListener = new DataSourceStateChangedListener(registryRepository);
+ dataSourceStateChangedListener = new DataSourceStateChangedListener(registryRepository, Arrays.asList("sharding_db", "masterslave_db", "encrypt_db"));
}
@Test
public void assertCreateGovernanceEvent() {
Optional<GovernanceEvent> actual = dataSourceStateChangedListener.createGovernanceEvent(
- new DataChangedEvent("/registry/datasources/master_slave_db.slave_ds_0", "disabled", ChangedType.UPDATED));
+ new DataChangedEvent("/registry/datasources/master_slave_db/slave_ds_0", "disabled", ChangedType.UPDATED));
assertTrue(actual.isPresent());
assertThat(((DisabledStateChangedEvent) actual.get()).getGovernanceSchema().getSchemaName(), is(new GovernanceSchema("master_slave_db", "slave_ds_0").getSchemaName()));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
index d926b17..a43cacc 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
@@ -25,6 +25,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import java.util.Arrays;
+
import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
@@ -41,7 +43,7 @@ public final class RegistryListenerManagerTest {
@Test
public void assertInitListeners() {
- RegistryListenerManager actual = new RegistryListenerManager(registryRepository);
+ RegistryListenerManager actual = new RegistryListenerManager(registryRepository, Arrays.asList("sharding_db", "masterslave_db", "encrypt_db"));
FieldUtil.setField(actual, "instanceStateChangedListener", instanceStateChangedListener);
FieldUtil.setField(actual, "dataSourceStateChangedListener", dataSourceStateChangedListener);
actual.initListeners();