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 <[email protected]>
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();