This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 046c70b85a5 Switch active version when execute Create/Drop table
(#26863)
046c70b85a5 is described below
commit 046c70b85a5ff3f950c84e327ad3b583480e8488
Author: zhaojinchao <[email protected]>
AuthorDate: Mon Jul 10 10:21:28 2023 +0800
Switch active version when execute Create/Drop table (#26863)
---
.../infra/instance/mode/ModeContextManager.java | 23 ----------------------
.../MetaDataVersionBasedPersistService.java | 17 ++++++++++++++++
.../version/MetaDataVersionPersistService.java | 11 +++++++++++
.../mode/subsciber/RuleItemChangedSubscriber.java | 5 +++--
.../cluster/NewClusterModeContextManager.java | 14 ++-----------
.../NewConfigurationChangedSubscriber.java | 8 ++++----
.../NewResourceMetaDataChangedSubscriber.java | 4 ++--
7 files changed, 39 insertions(+), 43 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
index 429a535ed00..691cc43b54f 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
@@ -163,27 +163,4 @@ public interface ModeContextManager {
* @param props pros
*/
void alterProperties(Properties props);
-
- /**
- * TODO Remove to MetaDataPersistService
- * Get active version by key.
- *
- * @param key key
- * @return active version
- */
- default String getActiveVersionByKey(String key) {
- return "";
- }
-
- /**
- * TODO Remove to MetaDataPersistService
- * Get version path by active version key.
- *
- * @param key key
- * @param activeVersion active version
- * @return version path
- */
- default String getVersionPathByActiveVersionKey(String key, String
activeVersion) {
- return "";
- }
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
index 3abc83f2194..6140cefdf1e 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
@@ -32,4 +32,21 @@ public interface MetaDataVersionBasedPersistService {
* @param metaDataVersions meta data versions
*/
void switchActiveVersion(Collection<MetaDataVersion> metaDataVersions);
+
+ /**
+ * Get active version by full path.
+ *
+ * @param fullPath full path
+ * @return active version
+ */
+ String getActiveVersionByFullPath(String fullPath);
+
+ /**
+ * Get version path by active version.
+ *
+ * @param path path
+ * @param activeVersion active version
+ * @return version path
+ */
+ String getVersionPathByActiveVersion(String path, String activeVersion);
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
index 6967d0337fa..e029370ffb6 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.metadata.persist.service.version;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
+import org.apache.shardingsphere.metadata.persist.node.NewDatabaseMetaDataNode;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -46,4 +47,14 @@ public final class MetaDataVersionPersistService implements
MetaDataVersionBased
repository.delete(String.join("/", each.getKey(), VERSIONS,
each.getCurrentActiveVersion()));
}
}
+
+ @Override
+ public String getActiveVersionByFullPath(final String fullPath) {
+ return repository.getDirectly(fullPath);
+ }
+
+ @Override
+ public String getVersionPathByActiveVersion(final String path, final
String activeVersion) {
+ return
repository.getDirectly(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath(path,
activeVersion));
+ }
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
index 5b8c6f01d5b..79b13178f73 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
@@ -45,11 +45,12 @@ public final class RuleItemChangedSubscriber {
@SuppressWarnings({"UnstableApiUsage", "rawtypes", "unchecked"})
@Subscribe
public void renew(final AlterRuleItemEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
RuleItemConfigurationChangedProcessor processor =
TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class,
event.getType());
- String yamlContent =
contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
event.getActiveVersion());
+ String yamlContent =
+
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getVersionPathByActiveVersion(event.getActiveVersionKey(),
event.getActiveVersion());
ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
RuleConfiguration currentRuleConfig =
processor.findRuleConfiguration(database);
synchronized (this) {
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
index f3bc0261d41..8cbdd641691 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
import
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-import org.apache.shardingsphere.metadata.persist.node.NewDatabaseMetaDataNode;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
import
org.apache.shardingsphere.metadata.persist.service.config.global.GlobalPersistService;
import
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataBasedPersistService;
@@ -128,7 +127,8 @@ public final class NewClusterModeContextManager implements
ModeContextManager, C
@Override
public void alterRuleConfiguration(final String databaseName, final
Collection<RuleConfiguration> ruleConfigs) {
ruleConfigs.removeIf(each ->
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persist(databaseName,
ruleConfigs);
+
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService()
+
.switchActiveVersion(contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persistConfig(databaseName,
ruleConfigs));
}
@Override
@@ -168,16 +168,6 @@ public final class NewClusterModeContextManager implements
ModeContextManager, C
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(versions);
}
- @Override
- public String getActiveVersionByKey(final String key) {
- return
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(key);
- }
-
- @Override
- public String getVersionPathByActiveVersionKey(final String key, final
String activeVersion) {
- return
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath(key,
activeVersion));
- }
-
@Override
public void setContextManagerAware(final ContextManager contextManager) {
this.contextManager = contextManager;
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
index 3fd5c791f1f..848408952a1 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
@@ -48,7 +48,7 @@ public final class NewConfigurationChangedSubscriber {
*/
@Subscribe
public void renew(final RegisterStorageUnitEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
contextManager.registerStorageUnit(event.getDatabaseName(),
@@ -62,7 +62,7 @@ public final class NewConfigurationChangedSubscriber {
*/
@Subscribe
public void renew(final AlterStorageUnitEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
contextManager.alterStorageUnit(event.getDatabaseName(),
event.getStorageUnitName(),
@@ -115,7 +115,7 @@ public final class NewConfigurationChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterGlobalRuleConfigurationEvent
event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
contextManager.alterGlobalRuleConfiguration(contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().load(event.getRuleSimpleName()));
@@ -128,7 +128,7 @@ public final class NewConfigurationChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterPropertiesEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
contextManager.alterProperties(contextManager.getMetaDataContexts().getPersistService().getPropsService().load());
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
index 3960b38e665..231512d6d52 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
@@ -93,7 +93,7 @@ public final class NewResourceMetaDataChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterTableEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
Map<String, ShardingSphereTable> tables =
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService()
@@ -118,7 +118,7 @@ public final class NewResourceMetaDataChangedSubscriber {
*/
@Subscribe
public synchronized void renew(final AlterViewEvent event) {
- if
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
{
+ if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
Map<String, ShardingSphereView> views =
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService()