This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 3c63464cdaf Split MetaDataVersion to MetaDataVersionNodePath (#34578)
3c63464cdaf is described below

commit 3c63464cdaf936e10ba0a52d69b84ea07b0bfafe
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Thu Feb 6 22:12:04 2025 +0800

    Split MetaDataVersion to MetaDataVersionNodePath (#34578)
---
 .../infra/metadata/version/MetaDataVersion.java    | 32 ----------------------
 .../version/MetaDataVersionPersistService.java     |  7 +++--
 .../database/DataSourceUnitPersistServiceTest.java |  2 --
 .../database/DatabaseRulePersistServiceTest.java   |  3 --
 .../node/path/version/MetaDataVersionNodePath.java | 16 ++---------
 .../path/version/MetaDataVersionNodePathTest.java  | 10 +++----
 .../standalone/changed/RuleItemChangedBuilder.java |  3 +-
 .../type/RuleItemAlteredBuildExecutor.java         | 13 +++++----
 .../type/RuleItemDroppedBuildExecutor.java         |  6 ++--
 9 files changed, 26 insertions(+), 66 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
index a303deb49a6..fe6190a0d0b 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
@@ -29,10 +29,6 @@ public final class MetaDataVersion {
     
     public static final int DEFAULT_VERSION = 0;
     
-    private static final String ACTIVE_VERSION = "active_version";
-    
-    private static final String VERSIONS = "versions";
-    
     private final String path;
     
     private final Integer currentActiveVersion;
@@ -42,32 +38,4 @@ public final class MetaDataVersion {
     public MetaDataVersion(final String path) {
         this(path, null, null);
     }
-    
-    /**
-     * Get active version path.
-     *
-     * @return path of active version node
-     */
-    public String getActiveVersionPath() {
-        return String.join("/", path, ACTIVE_VERSION);
-    }
-    
-    /**
-     * Get versions path.
-     *
-     * @return path of versions
-     */
-    public String getVersionsPath() {
-        return String.join("/", path, VERSIONS);
-    }
-    
-    /**
-     * Get version path.
-     *
-     * @param version version
-     * @return version path
-     */
-    public String getVersionPath(final int version) {
-        return String.join("/", getVersionsPath(), String.valueOf(version));
-    }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistService.java
index a1323cee046..44dabe630c8 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistService.java
@@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.mode.node.path.metadata.DatabaseMetaDataNodePath;
+import 
org.apache.shardingsphere.mode.node.path.version.MetaDataVersionNodePath;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
 
 import java.util.Collection;
@@ -47,8 +48,10 @@ public final class MetaDataVersionPersistService {
             if 
(each.getNextActiveVersion().equals(each.getCurrentActiveVersion())) {
                 continue;
             }
-            repository.persist(each.getActiveVersionPath(), 
String.valueOf(each.getNextActiveVersion()));
-            getVersions(each.getVersionsPath()).stream().filter(version -> 
version < each.getNextActiveVersion()).forEach(version -> 
repository.delete(each.getVersionPath(version)));
+            repository.persist(new 
MetaDataVersionNodePath(each.getPath()).getActiveVersionPath(), 
String.valueOf(each.getNextActiveVersion()));
+            MetaDataVersionNodePath versionNodePath = new 
MetaDataVersionNodePath(each.getPath());
+            getVersions(versionNodePath.getVersionsPath()).stream()
+                    .filter(version -> version < 
each.getNextActiveVersion()).forEach(version -> 
repository.delete(versionNodePath.getVersionPath(version)));
         }
     }
     
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistServiceTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistServiceTest.java
index b5f95506adf..b17a26d1c26 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistServiceTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistServiceTest.java
@@ -71,10 +71,8 @@ class DataSourceUnitPersistServiceTest {
         
when(repository.getChildrenKeys("/metadata/foo_db/data_sources/units/foo_ds/versions")).thenReturn(Collections.singletonList("10"));
         List<MetaDataVersion> actual = new 
ArrayList<>(persistService.persist("foo_db", dataSourcePropsMap));
         assertThat(actual.size(), is(2));
-        assertThat(actual.get(0).getActiveVersionPath(), 
is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
         assertThat(actual.get(0).getCurrentActiveVersion(), is(10));
         assertThat(actual.get(0).getNextActiveVersion(), is(11));
-        assertThat(actual.get(1).getActiveVersionPath(), 
is("/metadata/foo_db/data_sources/units/bar_ds/active_version"));
         assertNull(actual.get(1).getCurrentActiveVersion());
         assertThat(actual.get(1).getNextActiveVersion(), is(0));
     }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistServiceTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistServiceTest.java
index a42ef45a24e..9d11693b3a2 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistServiceTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistServiceTest.java
@@ -66,7 +66,6 @@ class DatabaseRulePersistServiceTest {
     void assertPersistWithoutActiveVersion() {
         Collection<MetaDataVersion> actual = persistService.persist("foo_db", 
Arrays.asList(new MetaDataRuleConfigurationFixture("test"), new 
NoTupleRuleConfigurationFixture("test")));
         assertThat(actual.size(), is(1));
-        assertThat(actual.iterator().next().getActiveVersionPath(), 
is("/metadata/foo_db/rules/fixture/fixture/active_version"));
         assertNull(actual.iterator().next().getCurrentActiveVersion());
         assertThat(actual.iterator().next().getNextActiveVersion(), is(0));
     }
@@ -77,7 +76,6 @@ class DatabaseRulePersistServiceTest {
         
when(repository.getChildrenKeys("/metadata/foo_db/rules/fixture/fixture/versions")).thenReturn(Collections.singletonList("10"));
         Collection<MetaDataVersion> actual = persistService.persist("foo_db", 
Collections.singleton(new MetaDataRuleConfigurationFixture("test")));
         assertThat(actual.size(), is(1));
-        assertThat(actual.iterator().next().getActiveVersionPath(), 
is("/metadata/foo_db/rules/fixture/fixture/active_version"));
         assertThat(actual.iterator().next().getCurrentActiveVersion(), is(10));
         assertThat(actual.iterator().next().getNextActiveVersion(), is(11));
     }
@@ -92,7 +90,6 @@ class DatabaseRulePersistServiceTest {
     void assertDeleteWithRuleConfigurations() {
         Collection<MetaDataVersion> actual = persistService.delete("foo_db", 
Arrays.asList(new MetaDataRuleConfigurationFixture("test"), new 
NoTupleRuleConfigurationFixture("test")));
         assertThat(actual.size(), is(1));
-        assertThat(actual.iterator().next().getActiveVersionPath(), 
is("/metadata/foo_db/rules/fixture/fixture/active_version"));
         assertNull(actual.iterator().next().getCurrentActiveVersion());
         assertNull(actual.iterator().next().getNextActiveVersion());
     }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePath.java
similarity index 82%
copy from 
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
copy to 
mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePath.java
index a303deb49a6..d1cd6ff5196 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersion.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePath.java
@@ -15,19 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.metadata.version;
+package org.apache.shardingsphere.mode.node.path.version;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
 /**
- * Meta data version.
+ * Meta data version node path.
  */
 @RequiredArgsConstructor
 @Getter
-public final class MetaDataVersion {
-    
-    public static final int DEFAULT_VERSION = 0;
+public final class MetaDataVersionNodePath {
     
     private static final String ACTIVE_VERSION = "active_version";
     
@@ -35,14 +33,6 @@ public final class MetaDataVersion {
     
     private final String path;
     
-    private final Integer currentActiveVersion;
-    
-    private final Integer nextActiveVersion;
-    
-    public MetaDataVersion(final String path) {
-        this(path, null, null);
-    }
-    
     /**
      * Get active version path.
      *
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePathTest.java
similarity index 74%
rename from 
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
rename to 
mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePathTest.java
index 71389546223..6ebfd984c9e 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/version/MetaDataVersionNodePathTest.java
@@ -15,27 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.metadata.version;
+package org.apache.shardingsphere.mode.node.path.version;
 
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-class MetaDataVersionTest {
+class MetaDataVersionNodePathTest {
     
     @Test
     void assertGetActiveVersionPath() {
-        assertThat(new MetaDataVersion("foo", 0, 1).getActiveVersionPath(), 
is("foo/active_version"));
+        assertThat(new MetaDataVersionNodePath("foo").getActiveVersionPath(), 
is("foo/active_version"));
     }
     
     @Test
     void assertGetVersionsPath() {
-        assertThat(new MetaDataVersion("foo", 0, 1).getVersionsPath(), 
is("foo/versions"));
+        assertThat(new MetaDataVersionNodePath("foo").getVersionsPath(), 
is("foo/versions"));
     }
     
     @Test
     void assertGetVersionPath() {
-        assertThat(new MetaDataVersion("foo", 0, 1).getVersionPath(0), 
is("foo/versions/0"));
+        assertThat(new MetaDataVersionNodePath("foo").getVersionPath(0), 
is("foo/versions/0"));
     }
 }
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
index 60fba5d69b4..7ca9d8e3a13 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/RuleItemChangedBuilder.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.mode.manager.standalone.changed;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleItemChangedBuildExecutor;
+import 
org.apache.shardingsphere.mode.node.path.version.MetaDataVersionNodePath;
 import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider;
 import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem;
 
@@ -41,7 +42,7 @@ public final class RuleItemChangedBuilder {
      */
     public <T extends RuleChangedItem> Optional<T> build(final String 
databaseName, final MetaDataVersion metaDataVersion, final 
RuleItemChangedBuildExecutor<T> executor) {
         for (RuleNodePathProvider each : 
ShardingSphereServiceLoader.getServiceInstances(RuleNodePathProvider.class)) {
-            if 
(!each.getRuleNodePath().getRoot().isValidatedPath(metaDataVersion.getActiveVersionPath()))
 {
+            if (!each.getRuleNodePath().getRoot().isValidatedPath(new 
MetaDataVersionNodePath(metaDataVersion.getPath()).getActiveVersionPath())) {
                 continue;
             }
             Optional<T> result = executor.build(each.getRuleNodePath(), 
databaseName, metaDataVersion);
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
index 253f75437d6..4c060fa2bd2 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemAlteredBuildExecutor.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleIt
 import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath;
 import 
org.apache.shardingsphere.mode.node.path.config.rule.item.NamedRuleItemNodePath;
 import 
org.apache.shardingsphere.mode.node.path.config.rule.item.UniqueRuleItemNodePath;
+import 
org.apache.shardingsphere.mode.node.path.version.MetaDataVersionNodePath;
 import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterNamedRuleItem;
 import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem;
 import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterUniqueRuleItem;
@@ -36,17 +37,17 @@ public final class RuleItemAlteredBuildExecutor implements 
RuleItemChangedBuildE
     
     @Override
     public Optional<AlterRuleItem> build(final RuleNodePath ruleNodePath, 
final String databaseName, final MetaDataVersion metaDataVersion) {
+        String activeVersionPath = new 
MetaDataVersionNodePath(metaDataVersion.getPath()).getActiveVersionPath();
         for (Entry<String, NamedRuleItemNodePath> entry : 
ruleNodePath.getNamedItems().entrySet()) {
-            Optional<String> itemName = 
entry.getValue().getNameByActiveVersion(metaDataVersion.getActiveVersionPath());
+            Optional<String> itemName = 
entry.getValue().getNameByActiveVersion(activeVersionPath);
             if (itemName.isPresent()) {
-                return Optional.of(new AlterNamedRuleItem(databaseName,
-                        itemName.get(), 
metaDataVersion.getActiveVersionPath(), metaDataVersion.getNextActiveVersion(), 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
+                return Optional.of(
+                        new AlterNamedRuleItem(databaseName, itemName.get(), 
activeVersionPath, metaDataVersion.getNextActiveVersion(), 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }
         for (Entry<String, UniqueRuleItemNodePath> entry : 
ruleNodePath.getUniqueItems().entrySet()) {
-            if 
(entry.getValue().isActiveVersionPath(metaDataVersion.getActiveVersionPath())) {
-                return Optional.of(new AlterUniqueRuleItem(databaseName,
-                        metaDataVersion.getActiveVersionPath(), 
metaDataVersion.getNextActiveVersion(), ruleNodePath.getRoot().getRuleType() + 
"." + entry.getKey()));
+            if (entry.getValue().isActiveVersionPath(activeVersionPath)) {
+                return Optional.of(new AlterUniqueRuleItem(databaseName, 
activeVersionPath, metaDataVersion.getNextActiveVersion(), 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }
         return Optional.empty();
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
index b4ec607d881..767a35e42be 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/changed/executor/type/RuleItemDroppedBuildExecutor.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.mode.manager.standalone.changed.executor.RuleIt
 import org.apache.shardingsphere.mode.node.path.config.rule.RuleNodePath;
 import 
org.apache.shardingsphere.mode.node.path.config.rule.item.NamedRuleItemNodePath;
 import 
org.apache.shardingsphere.mode.node.path.config.rule.item.UniqueRuleItemNodePath;
+import 
org.apache.shardingsphere.mode.node.path.version.MetaDataVersionNodePath;
 import org.apache.shardingsphere.mode.spi.rule.item.drop.DropNamedRuleItem;
 import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem;
 import org.apache.shardingsphere.mode.spi.rule.item.drop.DropUniqueRuleItem;
@@ -36,14 +37,15 @@ public final class RuleItemDroppedBuildExecutor implements 
RuleItemChangedBuildE
     
     @Override
     public Optional<DropRuleItem> build(final RuleNodePath ruleNodePath, final 
String databaseName, final MetaDataVersion metaDataVersion) {
+        String activeVersionPath = new 
MetaDataVersionNodePath(metaDataVersion.getPath()).getActiveVersionPath();
         for (Entry<String, NamedRuleItemNodePath> entry : 
ruleNodePath.getNamedItems().entrySet()) {
-            Optional<String> itemName = 
entry.getValue().getNameByItemPath(metaDataVersion.getActiveVersionPath());
+            Optional<String> itemName = 
entry.getValue().getNameByItemPath(activeVersionPath);
             if (itemName.isPresent()) {
                 return Optional.of(new DropNamedRuleItem(databaseName, 
itemName.get(), ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }
         for (Entry<String, UniqueRuleItemNodePath> entry : 
ruleNodePath.getUniqueItems().entrySet()) {
-            if 
(entry.getValue().isActiveVersionPath(metaDataVersion.getActiveVersionPath())) {
+            if (entry.getValue().isActiveVersionPath(activeVersionPath)) {
                 return Optional.of(new DropUniqueRuleItem(databaseName, 
ruleNodePath.getRoot().getRuleType() + "." + entry.getKey()));
             }
         }

Reply via email to