You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/06/29 09:58:41 UTC
[shardingsphere] branch master updated: Refactor rule changed subscribers (#26691)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 6025cdd0b0f Refactor rule changed subscribers (#26691)
6025cdd0b0f is described below
commit 6025cdd0b0f679f2582fbe45d6ba0cf9d88e48fd
Author: ChenJiaHao <Pa...@163.com>
AuthorDate: Thu Jun 29 17:58:34 2023 +0800
Refactor rule changed subscribers (#26691)
---
.../BroadcastConfigurationSubscriber.java | 17 ++---
.../encrypt/subscriber/EncryptTableSubscriber.java | 17 ++---
.../encrypt/subscriber/EncryptorSubscriber.java | 11 ++-
.../CompatibleEncryptTableSubscriber.java | 18 +++--
.../compatible/CompatibleEncryptorSubscriber.java | 11 ++-
.../mask/subscriber/MaskAlgorithmSubscriber.java | 13 ++--
.../mask/subscriber/MaskTableSubscriber.java | 19 +++--
.../ReadwriteSplittingDataSourceSubscriber.java | 17 ++---
.../ReadwriteSplittingLoadBalanceSubscriber.java | 11 ++-
.../DefaultShadowAlgorithmNameSubscriber.java | 12 ++--
.../subscriber/ShadowAlgorithmSubscriber.java | 14 ++--
.../subscriber/ShadowDataSourceSubscriber.java | 17 ++---
.../shadow/subscriber/ShadowTableSubscriber.java | 17 +++--
.../subscriber/ShardingAlgorithmSubscriber.java | 30 ++++----
.../ShardingCacheConfigurationSubscriber.java | 19 ++---
.../ShardingStrategyConfigurationSubscriber.java | 83 ++++++++++++++--------
.../ShardingTableConfigurationSubscriber.java | 53 ++++++++------
.../subscriber/SingleConfigurationSubscriber.java | 22 +++---
.../mode/subsciber/RuleChangedSubscriber.java | 8 ---
.../cluster/NewClusterContextManagerBuilder.java | 1 -
20 files changed, 213 insertions(+), 197 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 13a487e2f74..82474b39461 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
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.broadcast.event.config.AlterBroadcastTableEvent
import org.apache.shardingsphere.broadcast.event.config.DeleteBroadcastTableEvent;
import org.apache.shardingsphere.broadcast.rule.BroadcastRule;
import org.apache.shardingsphere.broadcast.yaml.config.YamlBroadcastRuleConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -43,8 +42,6 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add broadcast configuration.
*
@@ -52,12 +49,12 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final AddBroadcastTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
BroadcastRuleConfiguration needToAddedConfig = swapBroadcastTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<BroadcastRule> rule = database.getRuleMetaData().findSingleRule(BroadcastRule.class);
BroadcastRuleConfiguration config;
if (rule.isPresent()) {
@@ -67,7 +64,7 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
} else {
config = new BroadcastRuleConfiguration(needToAddedConfig.getTables());
}
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -77,16 +74,16 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final AlterBroadcastTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
BroadcastRuleConfiguration needToAlteredConfig = swapBroadcastTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
BroadcastRuleConfiguration config = database.getRuleMetaData().getSingleRule(BroadcastRule.class).getConfiguration();
config.getTables().clear();
config.getTables().addAll(needToAlteredConfig.getTables());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -102,7 +99,7 @@ public final class BroadcastConfigurationSubscriber implements RuleChangedSubscr
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
BroadcastRuleConfiguration config = database.getRuleMetaData().getSingleRule(BroadcastRule.class).getConfiguration();
config.getTables().clear();
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private BroadcastRuleConfiguration swapBroadcastTableRuleConfig(final String yamlContext) {
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 6afafe184fe..7fbd7de7af4 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
@@ -27,7 +27,6 @@ import org.apache.shardingsphere.encrypt.event.table.DeleteEncryptTableEvent;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.yaml.config.rule.YamlEncryptTableRuleConfiguration;
import org.apache.shardingsphere.encrypt.yaml.swapper.rule.YamlEncryptTableRuleConfigurationSwapper;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -47,8 +46,6 @@ public final class EncryptTableSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add encrypt configuration.
*
@@ -56,13 +53,13 @@ public final class EncryptTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AddEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptTableRuleConfiguration needToAddedConfig = swapEncryptTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getEncryptRuleConfiguration(database, needToAddedConfig)));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getEncryptRuleConfiguration(database, needToAddedConfig)));
}
/**
@@ -72,16 +69,16 @@ public final class EncryptTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptTableRuleConfiguration needToAlteredConfig = swapEncryptTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
EncryptRuleConfiguration config = (EncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
config.getTables().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -97,7 +94,7 @@ public final class EncryptTableSubscriber implements RuleChangedSubscriber {
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptRuleConfiguration config = (EncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private EncryptTableRuleConfiguration swapEncryptTableRuleConfig(final String yamlContext) {
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 6ed8f013deb..a276e30768c 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
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.encrypt.event.encryptor.AlterEncryptorEvent;
import org.apache.shardingsphere.encrypt.event.encryptor.DeleteEncryptorEvent;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -46,8 +45,6 @@ public final class EncryptorSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter encryptor.
*
@@ -55,11 +52,11 @@ public final class EncryptorSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterEncryptorEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getEncryptRuleConfiguration(database, event)));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getEncryptRuleConfiguration(database, event)));
}
/**
@@ -75,7 +72,7 @@ public final class EncryptorSubscriber implements RuleChangedSubscriber {
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptRuleConfiguration config = (EncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getEncryptors().remove(event.getEncryptorName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private EncryptRuleConfiguration getEncryptRuleConfiguration(final ShardingSphereDatabase database, final AlterEncryptorEvent event) {
@@ -83,7 +80,7 @@ public final class EncryptorSubscriber implements RuleChangedSubscriber {
EncryptRuleConfiguration config = rule.map(encryptRule -> getEncryptRuleConfiguration((EncryptRuleConfiguration) encryptRule.getConfiguration()))
.orElseGet(() -> new EncryptRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>()));
config.getEncryptors().put(event.getEncryptorName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
return config;
}
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 e5287f578f9..ec77d75f972 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
@@ -27,7 +27,6 @@ import org.apache.shardingsphere.encrypt.event.compatible.table.DeleteCompatible
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.yaml.config.rule.YamlEncryptTableRuleConfiguration;
import org.apache.shardingsphere.encrypt.yaml.swapper.rule.YamlEncryptTableRuleConfigurationSwapper;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -49,8 +48,6 @@ public final class CompatibleEncryptTableSubscriber implements RuleChangedSubscr
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add encrypt configuration.
*
@@ -58,13 +55,14 @@ public final class CompatibleEncryptTableSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final AddCompatibleEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptTableRuleConfiguration needToAddedConfig = swapEncryptTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getCompatibleEncryptRuleConfiguration(database, needToAddedConfig)));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(
+ new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getCompatibleEncryptRuleConfiguration(database, needToAddedConfig)));
}
/**
@@ -74,16 +72,16 @@ public final class CompatibleEncryptTableSubscriber implements RuleChangedSubscr
*/
@Subscribe
public synchronized void renew(final AlterCompatibleEncryptTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
EncryptTableRuleConfiguration needToAlteredConfig = swapEncryptTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
CompatibleEncryptRuleConfiguration config = (CompatibleEncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
config.getTables().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -99,7 +97,7 @@ public final class CompatibleEncryptTableSubscriber implements RuleChangedSubscr
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
CompatibleEncryptRuleConfiguration config = (CompatibleEncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private EncryptTableRuleConfiguration swapEncryptTableRuleConfig(final String yamlContext) {
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 62860c6dbd1..3200aecd53b 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
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.encrypt.event.compatible.encryptor.AlterCompati
import org.apache.shardingsphere.encrypt.event.compatible.encryptor.DeleteCompatibleEncryptorEvent;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -48,8 +47,6 @@ public final class CompatibleEncryptorSubscriber implements RuleChangedSubscribe
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter encryptor.
*
@@ -57,11 +54,11 @@ public final class CompatibleEncryptorSubscriber implements RuleChangedSubscribe
*/
@Subscribe
public synchronized void renew(final AlterCompatibleEncryptorEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getCompatibleEncryptRuleConfiguration(database, event)));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getCompatibleEncryptRuleConfiguration(database, event)));
}
/**
@@ -77,7 +74,7 @@ public final class CompatibleEncryptorSubscriber implements RuleChangedSubscribe
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
CompatibleEncryptRuleConfiguration config = (CompatibleEncryptRuleConfiguration) database.getRuleMetaData().getSingleRule(EncryptRule.class).getConfiguration();
config.getEncryptors().remove(event.getEncryptorName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private CompatibleEncryptRuleConfiguration getCompatibleEncryptRuleConfiguration(final ShardingSphereDatabase database, final AlterCompatibleEncryptorEvent event) {
@@ -85,7 +82,7 @@ public final class CompatibleEncryptorSubscriber implements RuleChangedSubscribe
CompatibleEncryptRuleConfiguration config = rule.map(encryptRule -> getEncryptRuleConfiguration((CompatibleEncryptRuleConfiguration) encryptRule.getConfiguration()))
.orElseGet(() -> new CompatibleEncryptRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>()));
config.getEncryptors().put(event.getEncryptorName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
return config;
}
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 a9ce8bf4a16..7e7c8972aa1 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.mask.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -46,8 +45,6 @@ public final class MaskAlgorithmSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter algorithm.
*
@@ -55,11 +52,11 @@ public final class MaskAlgorithmSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterMaskAlgorithmEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getMaskRuleConfiguration(database, event)));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getMaskRuleConfiguration(database, event)));
}
/**
@@ -75,15 +72,15 @@ public final class MaskAlgorithmSubscriber implements RuleChangedSubscriber {
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getMaskAlgorithms().remove(event.getAlgorithmName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private MaskRuleConfiguration getMaskRuleConfiguration(final ShardingSphereDatabase database, final AlterMaskAlgorithmEvent event) {
Optional<MaskRule> rule = database.getRuleMetaData().findSingleRule(MaskRule.class);
- MaskRuleConfiguration config = rule.map(encryptRule -> getMaskRuleConfiguration((MaskRuleConfiguration) encryptRule.getConfiguration()))
+ MaskRuleConfiguration config = rule.map(maskRule -> getMaskRuleConfiguration((MaskRuleConfiguration) maskRule.getConfiguration()))
.orElseGet(() -> new MaskRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>()));
config.getMaskAlgorithms().put(event.getAlgorithmName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
return config;
}
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 ad23caa07d1..ea860c5aa44 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.mask.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mask.api.config.MaskRuleConfiguration;
@@ -47,8 +46,6 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add mask configuration.
*
@@ -56,13 +53,13 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AddMaskTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
MaskTableRuleConfiguration needToAddedConfig = swapMaskTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getMaskRuleConfiguration(database, needToAddedConfig)));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), getMaskRuleConfiguration(database, needToAddedConfig)));
}
/**
@@ -72,16 +69,16 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterMaskTableEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
MaskTableRuleConfiguration needToAlteredConfig = swapMaskTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
config.getTables().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -97,7 +94,7 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
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()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private MaskTableRuleConfiguration swapMaskTableRuleConfig(final String yamlContext) {
@@ -106,7 +103,7 @@ public final class MaskTableSubscriber implements RuleChangedSubscriber {
private MaskRuleConfiguration getMaskRuleConfiguration(final ShardingSphereDatabase database, final MaskTableRuleConfiguration needToAddedConfig) {
Optional<MaskRule> rule = database.getRuleMetaData().findSingleRule(MaskRule.class);
- MaskRuleConfiguration config = rule.map(encryptRule -> getMaskRuleConfiguration((MaskRuleConfiguration) encryptRule.getConfiguration()))
+ MaskRuleConfiguration config = rule.map(maskRule -> getMaskRuleConfiguration((MaskRuleConfiguration) maskRule.getConfiguration()))
.orElseGet(() -> new MaskRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>()));
// TODO refactor DistSQL to only persist config
config.getTables().removeIf(each -> each.getName().equals(needToAddedConfig.getName()));
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 adc441d82b4..6c94497d093 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.readwritesplitting.subscriber;
import com.google.common.base.Strings;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -49,8 +48,6 @@ public final class ReadwriteSplittingDataSourceSubscriber implements RuleChanged
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add readwrite-splitting configuration.
*
@@ -58,12 +55,12 @@ public final class ReadwriteSplittingDataSourceSubscriber implements RuleChanged
*/
@Subscribe
public synchronized void renew(final AddReadwriteSplittingDataSourceEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ReadwriteSplittingDataSourceRuleConfiguration needToAddedConfig = swapDataSource(event.getGroupName(),
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(),
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(),
getConfig(contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName()), needToAddedConfig)));
}
@@ -74,16 +71,16 @@ public final class ReadwriteSplittingDataSourceSubscriber implements RuleChanged
*/
@Subscribe
public synchronized void renew(final AlterReadwriteSplittingDataSourceEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ReadwriteSplittingDataSourceRuleConfiguration needToAlteredConfig = swapDataSource(event.getGroupName(),
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
config.getDataSources().removeIf(each -> each.getName().equals(needToAlteredConfig.getName()));
config.getDataSources().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -99,7 +96,7 @@ public final class ReadwriteSplittingDataSourceSubscriber implements RuleChanged
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()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ReadwriteSplittingRuleConfiguration getConfig(final ShardingSphereDatabase database, final ReadwriteSplittingDataSourceRuleConfiguration needToAddedConfig) {
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 3acbb3864a3..45e24c73ca4 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.readwritesplitting.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -47,8 +46,6 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter load-balance.
*
@@ -56,12 +53,12 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterLoadBalancerEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
AlgorithmConfiguration needToAltered =
- swapToAlgorithmConfig(instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(),
+ swapToAlgorithmConfig(contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(),
getConfig(contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName()), event.getLoadBalanceName(), needToAltered)));
}
@@ -78,7 +75,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
config.getLoadBalancers().remove(event.getLoadBalanceName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ReadwriteSplittingRuleConfiguration getConfig(final ShardingSphereDatabase database, final String loadBalanceName, final AlgorithmConfiguration needToAltered) {
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 9ec9d4c29e6..79fed0dac2d 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shadow.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -40,8 +39,6 @@ public final class DefaultShadowAlgorithmNameSubscriber implements RuleChangedSu
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter default algorithm name.
*
@@ -49,6 +46,9 @@ public final class DefaultShadowAlgorithmNameSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AlterDefaultShadowAlgorithmNameEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
Optional<ShadowRule> rule = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName()).getRuleMetaData().findSingleRule(ShadowRule.class);
ShadowRuleConfiguration config;
if (rule.isPresent()) {
@@ -56,8 +56,8 @@ public final class DefaultShadowAlgorithmNameSubscriber implements RuleChangedSu
} else {
config = new ShadowRuleConfiguration();
}
- config.setDefaultShadowAlgorithmName(instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ config.setDefaultShadowAlgorithmName(contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -73,6 +73,6 @@ public final class DefaultShadowAlgorithmNameSubscriber implements RuleChangedSu
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.setDefaultShadowAlgorithmName(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
}
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 7126896cc98..1346cfd8c7c 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.shadow.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -44,8 +43,6 @@ public final class ShadowAlgorithmSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter algorithm.
*
@@ -53,8 +50,11 @@ public final class ShadowAlgorithmSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterShadowAlgorithmEvent event) {
- AlgorithmConfiguration needToAlteredConfig =
- swapToAlgorithmConfig(instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
+ AlgorithmConfiguration needToAlteredConfig = swapToAlgorithmConfig(
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<ShadowRule> rule = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName()).getRuleMetaData().findSingleRule(ShadowRule.class);
ShadowRuleConfiguration config;
if (rule.isPresent()) {
@@ -63,7 +63,7 @@ public final class ShadowAlgorithmSubscriber implements RuleChangedSubscriber {
config = new ShadowRuleConfiguration();
}
config.getShadowAlgorithms().put(event.getAlgorithmName(), needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -79,7 +79,7 @@ public final class ShadowAlgorithmSubscriber implements RuleChangedSubscriber {
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getShadowAlgorithms().remove(event.getAlgorithmName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private AlgorithmConfiguration swapToAlgorithmConfig(final String yamlContext) {
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 6ad3daed7f8..372751b95b2 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shadow.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -44,8 +43,6 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add shadow configuration.
*
@@ -53,11 +50,11 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AddShadowDataSourceEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShadowDataSourceConfiguration needToAddedConfig = swapShadowDataSourceRuleConfig(event.getDataSourceName(),
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<ShadowRule> rule = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName()).getRuleMetaData().findSingleRule(ShadowRule.class);
ShadowRuleConfiguration config;
if (rule.isPresent()) {
@@ -68,7 +65,7 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
// TODO refactor DistSQL to only persist config
config.getDataSources().removeIf(each -> each.getName().equals(needToAddedConfig.getName()));
config.getDataSources().add(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -78,16 +75,16 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterShadowDataSourceEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowDataSourceConfiguration needToAlteredConfig = swapShadowDataSourceRuleConfig(event.getDataSourceName(),
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getDataSources().removeIf(each -> each.getName().equals(event.getDataSourceName()));
config.getDataSources().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -103,7 +100,7 @@ public final class ShadowDataSourceSubscriber implements RuleChangedSubscriber {
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()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShadowDataSourceConfiguration swapShadowDataSourceRuleConfig(final String dataSourceName, final String yamlContext) {
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 decfd323e93..132a8a446ca 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shadow.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -45,8 +44,6 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add table.
*
@@ -54,8 +51,11 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AddShadowTableEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
renew(event.getDatabaseName(), event.getTableName(), swapToTableConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
}
/**
@@ -65,8 +65,11 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterShadowTableEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
renew(event.getDatabaseName(), event.getTableName(), swapToTableConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
}
private void renew(final String databaseName, final String tableName, final ShadowTableConfiguration needToAlteredConfig) {
@@ -78,7 +81,7 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
config = new ShadowRuleConfiguration();
}
config.getTables().put(tableName, needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(databaseName, config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(databaseName, config));
}
/**
@@ -94,7 +97,7 @@ public final class ShadowTableSubscriber implements RuleChangedSubscriber {
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShadowRuleConfiguration config = (ShadowRuleConfiguration) database.getRuleMetaData().getSingleRule(ShadowRule.class).getConfiguration();
config.getTables().remove(event.getTableName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShadowTableConfiguration swapToTableConfig(final String yamlContext) {
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 37252012d54..248f271d02c 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
@@ -48,8 +47,6 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with alter sharding algorithm.
*
@@ -57,11 +54,14 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final AlterShardingAlgorithmEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.getShardingAlgorithms().put(event.getAlgorithmName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -71,11 +71,14 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final AlterKeyGeneratorEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.getKeyGenerators().put(event.getKeyGeneratorName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -85,11 +88,14 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
*/
@Subscribe
public synchronized void renew(final AlterAuditorEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.getAuditors().put(event.getAuditorName(), swapToAlgorithmConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -105,7 +111,7 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getShardingAlgorithms().remove(event.getAlgorithmName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -121,7 +127,7 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getKeyGenerators().remove(event.getKeyGeneratorName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -137,7 +143,7 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getAuditors().remove(event.getAuditorName());
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
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 3c4a2aa3abc..8c4794055a2 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sharding.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -45,8 +44,6 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add sharding cache configuration.
*
@@ -54,9 +51,12 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AddShardingCacheConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingCacheConfiguration needToAddedConfig = swapToShardingCacheConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
ShardingRuleConfiguration config;
if (rule.isPresent()) {
@@ -65,7 +65,7 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
config = new ShardingRuleConfiguration();
}
config.setShardingCache(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -75,12 +75,15 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AlterShardingCacheConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingCacheConfiguration needToAlteredConfig = swapToShardingCacheConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setShardingCache(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -96,7 +99,7 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setShardingCache(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShardingCacheConfiguration swapToShardingCacheConfig(final String yamlContext) {
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 da219bc85e4..ffed21d8cad 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sharding.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -63,8 +62,6 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add default database sharding strategy configuration.
*
@@ -72,12 +69,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AddDatabaseShardingStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingStrategyConfiguration needToAddedConfig = swapShardingStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.setDefaultDatabaseShardingStrategy(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -87,12 +87,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AddTableShardingStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingStrategyConfiguration needToAddedConfig = swapShardingStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.setDefaultTableShardingStrategy(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -102,12 +105,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AddKeyGenerateStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
KeyGenerateStrategyConfiguration needToAddedConfig = swapKeyGenerateStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.setDefaultKeyGenerateStrategy(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -117,12 +123,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AddShardingAuditorStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingAuditStrategyConfiguration needToAddedConfig = swapShardingAuditorStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.setDefaultAuditStrategy(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -132,11 +141,14 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AddDefaultShardingColumnEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
- String needToAddedConfig = instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion());
+ String needToAddedConfig = contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion());
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
config.setDefaultShardingColumn(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -146,12 +158,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterDatabaseShardingStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingStrategyConfiguration needToAlteredConfig = swapShardingStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultDatabaseShardingStrategy(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -161,12 +176,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterTableShardingStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingStrategyConfiguration needToAlteredConfig = swapShardingStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultTableShardingStrategy(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -176,12 +194,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterKeyGenerateStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
KeyGenerateStrategyConfiguration needToAlteredConfig = swapKeyGenerateStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultKeyGenerateStrategy(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -191,12 +212,15 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterShardingAuditorStrategyConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingAuditStrategyConfiguration needToAlteredConfig = swapShardingAuditorStrategyConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultAuditStrategy(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -206,11 +230,14 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
*/
@Subscribe
public synchronized void renew(final AlterDefaultShardingColumnEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
- String needToAlteredConfig = instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion());
+ String needToAlteredConfig = contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultShardingColumn(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -226,7 +253,7 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultDatabaseShardingStrategy(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -242,7 +269,7 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultTableShardingStrategy(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -258,7 +285,7 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultKeyGenerateStrategy(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -274,7 +301,7 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultAuditStrategy(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -290,7 +317,7 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.setDefaultAuditStrategy(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
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 2370a61bf91..ae2ef7d418a 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
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sharding.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -56,8 +55,6 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add sharding table configuration.
*
@@ -65,17 +62,17 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AddShardingTableConfigurationEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingTableRuleConfiguration needToAddedConfig = swapShardingTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
// TODO refactor DistSQL to only persist config
config.getTables().removeIf(each -> each.getLogicTable().equals(needToAddedConfig.getLogicTable()));
config.getTables().add(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -85,17 +82,17 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AddShardingAutoTableConfigurationEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingAutoTableRuleConfiguration needToAddedConfig = swapShardingAutoTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
// TODO refactor DistSQL to only persist config
config.getAutoTables().removeIf(each -> each.getLogicTable().equals(needToAddedConfig.getLogicTable()));
config.getAutoTables().add(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -105,14 +102,17 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AddShardingTableReferenceConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingTableReferenceRuleConfiguration needToAddedConfig = swapShardingTableReferenceRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
// TODO refactor DistSQL to only persist config
config.getBindingTableGroups().removeIf(each -> each.getName().equals(needToAddedConfig.getName()));
config.getBindingTableGroups().add(needToAddedConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -122,16 +122,16 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AlterShardingTableConfigurationEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingTableRuleConfiguration needToAlteredConfig = swapShardingTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getLogicTable().equals(event.getTableName()));
config.getTables().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -141,16 +141,16 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AlterShardingAutoTableConfigurationEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingAutoTableRuleConfiguration needToAlteredConfig = swapShardingAutoTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getAutoTables().removeIf(each -> each.getLogicTable().equals(event.getTableName()));
config.getAutoTables().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -160,13 +160,16 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final AlterShardingTableReferenceConfigurationEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
ShardingTableReferenceRuleConfiguration needToAlteredConfig = swapShardingTableReferenceRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
config.getBindingTableGroups().removeIf(each -> each.getName().equals(event.getTableName()));
config.getBindingTableGroups().add(needToAlteredConfig);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -182,7 +185,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
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()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -192,10 +195,13 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final DeleteShardingAutoTableConfigurationEvent 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.getAutoTables().removeIf(each -> each.getLogicTable().equals(event.getTableName()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -205,10 +211,13 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
*/
@Subscribe
public synchronized void renew(final DeleteShardingTableReferenceConfigurationEvent 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.getBindingTableGroups().removeIf(each -> each.getName().equals(event.getTableName()));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/subscriber/SingleConfigurationSubscriber.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/subscriber/SingleConfigurationSubscriber.java
index 5b973a08d62..b807556d087 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/subscriber/SingleConfigurationSubscriber.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/subscriber/SingleConfigurationSubscriber.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.single.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
@@ -43,8 +42,6 @@ public final class SingleConfigurationSubscriber implements RuleChangedSubscribe
private ContextManager contextManager;
- private InstanceContext instanceContext;
-
/**
* Renew with add single configuration.
*
@@ -52,9 +49,12 @@ public final class SingleConfigurationSubscriber implements RuleChangedSubscribe
*/
@Subscribe
public synchronized void renew(final AddSingleTableEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
SingleRuleConfiguration needToAddedConfig = swapSingleTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<SingleRule> rule = database.getRuleMetaData().findSingleRule(SingleRule.class);
SingleRuleConfiguration config;
if (rule.isPresent()) {
@@ -64,7 +64,7 @@ public final class SingleConfigurationSubscriber implements RuleChangedSubscribe
} else {
config = new SingleRuleConfiguration(needToAddedConfig.getTables(), needToAddedConfig.getDefaultDataSource().orElse(null));
}
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -74,13 +74,16 @@ public final class SingleConfigurationSubscriber implements RuleChangedSubscribe
*/
@Subscribe
public synchronized void renew(final AlterSingleTableEvent event) {
+ if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
SingleRuleConfiguration needToAlteredConfig = swapSingleTableRuleConfig(
- instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+ contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
SingleRuleConfiguration config = database.getRuleMetaData().getSingleRule(SingleRule.class).getConfiguration();
config.setTables(needToAlteredConfig.getTables());
config.setDefaultDataSource(needToAlteredConfig.getDefaultDataSource().orElse(null));
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
/**
@@ -90,11 +93,14 @@ public final class SingleConfigurationSubscriber implements RuleChangedSubscribe
*/
@Subscribe
public synchronized void renew(final DeleteSingleTableEvent event) {
+ if (!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName())) {
+ return;
+ }
ShardingSphereDatabase database = contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
SingleRuleConfiguration config = database.getRuleMetaData().getSingleRule(SingleRule.class).getConfiguration();
config.getTables().clear();
config.setDefaultDataSource(null);
- instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+ contextManager.getInstanceContext().getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
private SingleRuleConfiguration swapSingleTableRuleConfig(final String yamlContext) {
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleChangedSubscriber.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleChangedSubscriber.java
index 3b825126940..60db5c37367 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleChangedSubscriber.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleChangedSubscriber.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.mode.subsciber;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
/**
@@ -31,11 +30,4 @@ public interface RuleChangedSubscriber {
* @param contextManager context manager
*/
void setContextManager(ContextManager contextManager);
-
- /**
- * Set instance context.
- *
- * @param instanceContext instance context to be set
- */
- void setInstanceContext(InstanceContext instanceContext);
}
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.java
index 4572444fb76..9c623ee0dd6 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.java
@@ -96,7 +96,6 @@ public final class NewClusterContextManagerBuilder implements ContextManagerBuil
private void registerRuleConfigurationSubscribers(final ContextManager contextManager, final InstanceContext instanceContext) {
for (RuleChangedSubscriber each : ShardingSphereServiceLoader.getServiceInstances(RuleChangedSubscriber.class)) {
each.setContextManager(contextManager);
- each.setInstanceContext(instanceContext);
instanceContext.getEventBusContext().register(each);
}
}