You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/06/27 11:42:30 UTC
[shardingsphere] branch master updated: Enhanced delete metadata refresh (#26630)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 fa39fc1698c Enhanced delete metadata refresh (#26630)
fa39fc1698c is described below
commit fa39fc1698c6f059df391ced9cccf01942400c2b
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Tue Jun 27 19:42:24 2023 +0800
Enhanced delete metadata refresh (#26630)
* Enhanced delete metadata refresh
* Remove unless parameter
---
.../BroadcastConfigurationSubscriber.java | 3 ++
...atibleEncryptRuleConfigurationEventBuilder.java | 4 +--
.../EncryptRuleConfigurationEventBuilder.java | 4 +--
.../encryptor/DeleteCompatibleEncryptorEvent.java | 4 ---
.../table/DeleteCompatibleEncryptTableEvent.java | 4 ---
.../event/encryptor/DeleteEncryptorEvent.java | 4 ---
.../event/table/DeleteEncryptTableEvent.java | 4 ---
.../encrypt/subscriber/EncryptTableSubscriber.java | 2 +-
.../encrypt/subscriber/EncryptorSubscriber.java | 2 +-
.../CompatibleEncryptTableSubscriber.java | 2 +-
.../compatible/CompatibleEncryptorSubscriber.java | 2 +-
.../mask/subscriber/MaskAlgorithmSubscriber.java | 3 ++
.../mask/subscriber/MaskTableSubscriber.java | 3 ++
.../ReadwriteSplittingDataSourceSubscriber.java | 3 ++
.../ReadwriteSplittingLoadBalanceSubscriber.java | 3 ++
.../DefaultShadowAlgorithmNameSubscriber.java | 3 ++
.../subscriber/ShadowAlgorithmSubscriber.java | 3 ++
.../subscriber/ShadowDataSourceSubscriber.java | 3 ++
.../shadow/subscriber/ShadowTableSubscriber.java | 3 ++
.../subscriber/ShardingAlgorithmSubscriber.java | 9 +++++
.../ShardingCacheConfigurationSubscriber.java | 3 ++
.../ShardingStrategyConfigurationSubscriber.java | 15 ++++++++
.../ShardingTableConfigurationSubscriber.java | 3 ++
.../mode/manager/ContextManager.java | 6 ++++
.../subscriber/NewDataSourceChangedSubscriber.java | 3 ++
.../NewResourceMetaDataChangedSubscriber.java | 1 -
.../cluster/zookeeper/ZookeeperRepository.java | 1 +
.../bootstrap/src/main/resources/conf/server.yaml | 40 +++++++++++-----------
28 files changed, 95 insertions(+), 45 deletions(-)
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
index 04044ef6241..13a487e2f74 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
@@ -96,6 +96,9 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final DeleteBroadcastTableEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
BroadcastRuleConfiguration config = database.getRuleMetaData().getSingleRule(BroadcastRule.class).getConfiguration();
config.getTables().clear();
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
index ad87ec92f11..cc381a8a0bc 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/CompatibleEncryptRuleConfigurationEventBuilder.java
@@ -64,13 +64,13 @@ public final class CompatibleEncryptRuleConfigurationEventBuilder implements Rul
if (Type.UPDATED == event.getType()) {
return Optional.of(new AlterCompatibleEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteCompatibleEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue()));
+ return Optional.of(new DeleteCompatibleEncryptTableEvent(databaseName, groupName));
}
private Optional<GovernanceEvent> createEncryptorEvent(final String databaseName, final String encryptorName, final DataChangedEvent event) {
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
return Optional.of(new AlterCompatibleEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteCompatibleEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue()));
+ return Optional.of(new DeleteCompatibleEncryptorEvent(databaseName, encryptorName));
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
index e832db6b41e..0dd8193ef38 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
@@ -62,13 +62,13 @@ public final class EncryptRuleConfigurationEventBuilder implements RuleConfigura
if (Type.UPDATED == event.getType()) {
return Optional.of(new AlterEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteEncryptTableEvent(databaseName, groupName, event.getKey(), event.getValue()));
+ return Optional.of(new DeleteEncryptTableEvent(databaseName, groupName));
}
private Optional<GovernanceEvent> createEncryptorEvent(final String databaseName, final String encryptorName, final DataChangedEvent event) {
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
return Optional.of(new AlterEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteEncryptorEvent(databaseName, encryptorName, event.getKey(), event.getValue()));
+ return Optional.of(new DeleteEncryptorEvent(databaseName, encryptorName));
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/DeleteCompatibleEncryptorEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/DeleteCompatibleEncryptorEvent.java
index 025c0d098af..c2ce43409f6 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/DeleteCompatibleEncryptorEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/encryptor/DeleteCompatibleEncryptorEvent.java
@@ -33,8 +33,4 @@ public final class DeleteCompatibleEncryptorEvent implements GovernanceEvent {
private final String databaseName;
private final String encryptorName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/DeleteCompatibleEncryptTableEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/DeleteCompatibleEncryptTableEvent.java
index adbb4f0b157..08b74430dd9 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/DeleteCompatibleEncryptTableEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/compatible/table/DeleteCompatibleEncryptTableEvent.java
@@ -33,8 +33,4 @@ public final class DeleteCompatibleEncryptTableEvent implements GovernanceEvent
private final String databaseName;
private final String tableName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
index af6428835be..ecd264bd64e 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
@@ -31,8 +31,4 @@ public final class DeleteEncryptorEvent implements GovernanceEvent {
private final String databaseName;
private final String encryptorName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/DeleteEncryptTableEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/DeleteEncryptTableEvent.java
index 4d37837a7ef..310b994afa2 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/DeleteEncryptTableEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/table/DeleteEncryptTableEvent.java
@@ -31,8 +31,4 @@ public final class DeleteEncryptTableEvent implements GovernanceEvent {
private final String databaseName;
private final String tableName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptTableSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptTableSubscriber.java
index 6b7daef25a8..6afafe184fe 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptTableSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptTableSubscriber.java
@@ -91,7 +91,7 @@ public final class EncryptTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
index 6d0585f2141..6ed8f013deb 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
@@ -69,7 +69,7 @@ public final class EncryptorSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteEncryptorEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptTableSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptTableSubscriber.java
index d94ecd6f4f4..e5287f578f9 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptTableSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptTableSubscriber.java
@@ -93,7 +93,7 @@ public final class CompatibleEncryptTableSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final DeleteCompatibleEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptorSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptorSubscriber.java
index 94208d648c6..62860c6dbd1 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptorSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/compatible/CompatibleEncryptorSubscriber.java
@@ -71,7 +71,7 @@ public final class CompatibleEncryptorSubscriber implements RuleChangedSubscribe
*/
@Subscribe
public synchronized void renew(final DeleteCompatibleEncryptorEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
index 4dee1ecf849..a9ce8bf4a16 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
@@ -69,6 +69,9 @@ public final class MaskAlgorithmSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteMaskAlgorithmEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getMaskAlgorithms().remove(event.getAlgorithmName());
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
index bb4628a1a8c..ad23caa07d1 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
@@ -91,6 +91,9 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteMaskTableEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
index b32f84c275f..1213a9e738b 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
@@ -93,6 +93,9 @@ public final class ReadwriteSplittingDataSourceSubscriber implements RuleChanged
*/
@Subscribe
public synchronized void renew(final DeleteReadwriteSplittingDataSourceEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
config.getDataSources().removeIf(each -> each.getName().equals(event.getGroupName()));
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
index 1025d63c461..fd4fa9503cd 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
@@ -72,6 +72,9 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteLoadBalanceEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
config.getLoadBalancers().remove(event.getLoadBalanceName());
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/DefaultShadowAlgorithmNameSubscriber.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/DefaultShadowAlgorithmNameSubscriber.java
index 90bdf5afc83..9ec9d4c29e6 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/DefaultShadowAlgorithmNameSubscriber.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/DefaultShadowAlgorithmNameSubscriber.java
@@ -67,6 +67,9 @@ public final class DefaultShadowAlgorithmNameSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final DeleteDefaultShadowAlgorithmNameEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.setDefaultShadowAlgorithmName(null);
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowAlgorithmSubscriber.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowAlgorithmSubscriber.java
index 2350e9426a2..7126896cc98 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowAlgorithmSubscriber.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowAlgorithmSubscriber.java
@@ -73,6 +73,9 @@ public final class ShadowAlgorithmSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteShadowAlgorithmEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getShadowAlgorithms().remove(event.getAlgorithmName());
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowDataSourceSubscriber.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowDataSourceSubscriber.java
index bdc28abfd16..6ad3daed7f8 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowDataSourceSubscriber.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowDataSourceSubscriber.java
@@ -97,6 +97,9 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteShadowDataSourceEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getDataSources().removeIf(each -> each.getName().equals(event.getDataSourceName()));
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowTableSubscriber.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowTableSubscriber.java
index 1bc9625f41d..decfd323e93 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowTableSubscriber.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowTableSubscriber.java
@@ -88,6 +88,9 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final DeleteShadowTableEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getTables().remove(event.getTableName());
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
index 4562fea2053..37252012d54 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
@@ -99,6 +99,9 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final DeleteShardingAlgorithmEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getShardingAlgorithms().remove(event.getAlgorithmName());
@@ -112,6 +115,9 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final DeleteKeyGeneratorEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getKeyGenerators().remove(event.getKeyGeneratorName());
@@ -125,6 +131,9 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final DeleteAuditorEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getAuditors().remove(event.getAuditorName());
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
index a83fad5d4fb..3c4a2aa3abc 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
@@ -90,6 +90,9 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final DeleteShardingCacheConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setShardingCache(null);
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
index 118071ef05a..da219bc85e4 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
@@ -220,6 +220,9 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteDatabaseShardingStrategyConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultDatabaseShardingStrategy(null);
@@ -233,6 +236,9 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteTableShardingStrategyConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultTableShardingStrategy(null);
@@ -246,6 +252,9 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteKeyGenerateStrategyConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultKeyGenerateStrategy(null);
@@ -259,6 +268,9 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteShardingAuditorStrategyConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultAuditStrategy(null);
@@ -272,6 +284,9 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final DeleteDefaultShardingColumnEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultAuditStrategy(null);
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
index 3647d4bfe78..2370a61bf91 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
@@ -176,6 +176,9 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final DeleteShardingTableConfigurationEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getLogicTable().equals(event.getTableName()));
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index c6aecf25d1d..ed51e0908c0 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -180,6 +180,9 @@ public final class ContextManager implements AutoCloseable {
* @param schemaName schema name
*/
public synchronized void dropSchema(final String databaseName, final String schemaName) {
+ if (!metaDataContexts.get().getMetaData().containsDatabase(databaseName)) {
+ return;
+ }
ShardingSphereDatabase database = metaDataContexts.get().getMetaData().getDatabase(databaseName);
if (!database.containsSchema(schemaName)) {
return;
@@ -197,6 +200,9 @@ public final class ContextManager implements AutoCloseable {
* @param toBeDeletedViewName to be deleted view name
*/
public synchronized void alterSchema(final String databaseName, final String schemaName, final String toBeDeletedTableName, final String toBeDeletedViewName) {
+ if (!metaDataContexts.get().getMetaData().containsDatabase(databaseName) || !metaDataContexts.get().getMetaData().getDatabase(databaseName).containsSchema(schemaName)) {
+ return;
+ }
Optional.ofNullable(toBeDeletedTableName).ifPresent(optional -> dropTable(databaseName, schemaName, optional));
Optional.ofNullable(toBeDeletedViewName).ifPresent(optional -> dropView(databaseName, schemaName, optional));
alterMetaDataHeldRule(metaDataContexts.get().getMetaData().getDatabase(databaseName));
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
index 5a87ed13bae..ab7b2d033a6 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
@@ -72,6 +72,9 @@ public final class NewDataSourceChangedSubscriber {
*/
@Subscribe
public void renew(final UnregisterStorageUnitEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
contextManager.unregisterStorageUnit(event.getDatabaseName(), event.getStorageUnitName());
}
}
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
index 4e461936076..3960b38e665 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
@@ -109,7 +109,6 @@ public final class NewResourceMetaDataChangedSubscriber {
@Subscribe
public synchronized void renew(final DropTableEvent event) {
contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), event.getTableName(), null);
-
}
/**
diff --git a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
index 44845d3f89a..52dc8923b51 100644
--- a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
+++ b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
@@ -243,6 +243,7 @@ public final class ZookeeperRepository implements ClusterPersistRepository, Inst
.forTreeCache(client, (framework, treeCacheListener) -> {
Type changedType = getChangedType(treeCacheListener.getType());
if (Type.IGNORED != changedType) {
+ System.out.println("watch path is :" + treeCacheListener.getData().getPath());
listener.onChange(new DataChangedEvent(treeCacheListener.getData().getPath(),
new String(treeCacheListener.getData().getData(), StandardCharsets.UTF_8), changedType));
}
diff --git a/proxy/bootstrap/src/main/resources/conf/server.yaml b/proxy/bootstrap/src/main/resources/conf/server.yaml
index 9b0c5cd34f3..9b235cabc21 100644
--- a/proxy/bootstrap/src/main/resources/conf/server.yaml
+++ b/proxy/bootstrap/src/main/resources/conf/server.yaml
@@ -21,26 +21,26 @@
#
######################################################################################################
-#mode:
-# type: Cluster
-# repository:
-# type: ZooKeeper
-# props:
-# namespace: governance_ds
-# server-lists: localhost:2181
-# retryIntervalMilliseconds: 500
-# timeToLiveSeconds: 60
-# maxRetries: 3
-# operationTimeoutMilliseconds: 500
-#
-#authority:
-# users:
-# - user: root@%
-# password: root
-# - user: sharding
-# password: sharding
-# privilege:
-# type: ALL_PERMITTED
+mode:
+ type: Cluster
+ repository:
+ type: ZooKeeper
+ props:
+ namespace: governance_ds
+ server-lists: localhost:2181
+ retryIntervalMilliseconds: 500
+ timeToLiveSeconds: 60
+ maxRetries: 3
+ operationTimeoutMilliseconds: 500
+
+authority:
+ users:
+ - user: root@%
+ password: root
+ - user: sharding
+ password: sharding
+ privilege:
+ type: ALL_PERMITTED
#
#transaction:
# defaultType: XA