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 b5f26183451 Refactor metadata version type from String to int (#34563)
b5f26183451 is described below
commit b5f26183451cffc9d3bb411dce9c072da4c3af32
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Feb 5 23:32:20 2025 +0800
Refactor metadata version type from String to int (#34563)
* Refactor activeVersion type from String to int
* Refactor metadata version type from String to int
* Refactor metadata version type from String to int
* Refactor metadata version type from String to int
* Refactor metadata version type from String to int
---
.../infra/metadata/version/MetaDataVersion.java | 12 ++++++------
.../infra/metadata/version/MetaDataVersionTest.java | 6 +++---
.../manager/rule/DatabaseRuleItemManager.java | 2 +-
.../config/database/DataSourceUnitPersistService.java | 19 +++++++++++--------
.../config/database/DatabaseRulePersistService.java | 13 +++++++------
.../config/global/GlobalRulePersistService.java | 18 ++++++++++++------
.../config/global/PropertiesPersistService.java | 16 +++++++++-------
.../metadata/service/TableMetaDataPersistService.java | 17 ++++++++++-------
.../metadata/service/ViewMetaDataPersistService.java | 16 +++++++++-------
.../version/MetaDataVersionPersistService.java | 16 ++++++++--------
.../database/DataSourceUnitPersistServiceTest.java | 6 +++---
.../database/DatabaseRulePersistServiceTest.java | 10 +++++-----
.../version/MetaDataVersionPersistServiceTest.java | 6 +++---
.../mode/node/path/GlobalPropertiesNodePath.java | 4 ++--
.../mode/node/path/GlobalRuleNodePath.java | 6 +++---
.../path/metadata/DataSourceMetaDataNodePath.java | 16 ++--------------
.../node/path/metadata/DatabaseMetaDataNodePath.java | 2 +-
.../path/metadata/DatabaseRuleMetaDataNodePath.java | 4 ++--
.../node/path/metadata/TableMetaDataNodePath.java | 4 ++--
.../mode/node/path/metadata/ViewMetaDataNodePath.java | 4 ++--
.../mode/node/path/DatabaseMetaDataNodePathTest.java | 2 +-
.../mode/node/path/GlobalPropertiesNodePathTest.java | 2 +-
.../mode/node/path/GlobalRuleNodePathTest.java | 2 +-
.../path/metadata/DataSourceMetaDataNodePathTest.java | 7 +------
.../metadata/DatabaseRuleMetaDataNodePathTest.java | 2 +-
.../node/path/metadata/TableMetaDataNodePathTest.java | 2 +-
.../node/path/metadata/ViewMetaDataNodePathTest.java | 2 +-
.../mode/spi/rule/item/alter/AlterNamedRuleItem.java | 2 +-
.../mode/spi/rule/item/alter/AlterRuleItem.java | 2 +-
.../mode/spi/rule/item/alter/AlterUniqueRuleItem.java | 2 +-
.../rule/type/NamedRuleItemChangedHandler.java | 2 +-
.../rule/type/UniqueRuleItemChangedHandler.java | 2 +-
.../rule/RuleConfigurationChangedHandlerTest.java | 8 ++++----
.../standalone/changed/RuleItemChangedBuilder.java | 15 +++++++--------
34 files changed, 124 insertions(+), 125 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 a74ec55b3ee..7d6d2684cf6 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
@@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor;
@Getter
public final class MetaDataVersion {
- public static final String DEFAULT_VERSION = "0";
+ public static final int DEFAULT_VERSION = 0;
private static final String ACTIVE_VERSION = "active_version";
@@ -35,12 +35,12 @@ public final class MetaDataVersion {
private final String key;
- private final String currentActiveVersion;
+ private final Integer currentActiveVersion;
- private final String nextActiveVersion;
+ private final Integer nextActiveVersion;
public MetaDataVersion(final String key) {
- this(key, "", "");
+ this(key, null, null);
}
/**
@@ -58,8 +58,8 @@ public final class MetaDataVersion {
* @param version version
* @return path of versions node
*/
- public String getVersionsNodePath(final String version) {
- return String.join("/", key, VERSIONS, version);
+ public String getVersionsNodePath(final int version) {
+ return String.join("/", key, VERSIONS, String.valueOf(version));
}
/**
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
index 1bdd7410130..e4f6ebe853a 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/version/MetaDataVersionTest.java
@@ -26,16 +26,16 @@ class MetaDataVersionTest {
@Test
void assertGetActiveVersionNodePath() {
- assertThat(new MetaDataVersion("foo", "0",
"1").getActiveVersionNodePath(), is("foo/active_version"));
+ assertThat(new MetaDataVersion("foo", 0,
1).getActiveVersionNodePath(), is("foo/active_version"));
}
@Test
void assertGetVersionsNodePath() {
- assertThat(new MetaDataVersion("foo", "0",
"1").getVersionsNodePath("0"), is("foo/versions/0"));
+ assertThat(new MetaDataVersion("foo", 0, 1).getVersionsNodePath(0),
is("foo/versions/0"));
}
@Test
void assertGetVersionsPath() {
- assertThat(new MetaDataVersion("foo", "0", "1").getVersionsPath(),
is("foo/versions"));
+ assertThat(new MetaDataVersion("foo", 0, 1).getVersionsPath(),
is("foo/versions"));
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
index 10784e66674..b7a5daabff5 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
@@ -49,7 +49,7 @@ public final class DatabaseRuleItemManager {
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public void alter(final AlterRuleItem alterRuleItem) throws SQLException {
-
Preconditions.checkArgument(alterRuleItem.getActiveVersion().equals(metaDataPersistFacade.getRepository().query(alterRuleItem.getActiveVersionKey())),
+
Preconditions.checkArgument(String.valueOf(alterRuleItem.getActiveVersion()).equals(metaDataPersistFacade.getRepository().query(alterRuleItem.getActiveVersionKey())),
"Invalid active version: %s of key: %s",
alterRuleItem.getActiveVersion(), alterRuleItem.getActiveVersionKey());
RuleItemConfigurationChangedProcessor processor =
TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class,
alterRuleItem.getType());
String yamlContent =
metaDataPersistFacade.getMetaDataVersionService().getVersionPathByActiveVersion(alterRuleItem.getActiveVersionKey(),
alterRuleItem.getActiveVersion());
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
index 7da1f0bc61b..93b43dd7df8 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DataSourceUnitPersistService.java
@@ -71,7 +71,9 @@ public final class DataSourceUnitPersistService {
*/
@SuppressWarnings("unchecked")
public DataSourcePoolProperties load(final String databaseName, final
String dataSourceName) {
- String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getStorageUnitVersionPath(databaseName,
dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
+ Integer dataSourceActiveVersion =
getDataSourceActiveVersion(databaseName, dataSourceName);
+ String dataSourceValue = repository.query(
+
DataSourceMetaDataNodePath.getStorageUnitVersionPath(databaseName,
dataSourceName, null == dataSourceActiveVersion ?
MetaDataVersion.DEFAULT_VERSION : dataSourceActiveVersion));
return
yamlDataSourceConfigurationSwapper.swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class));
}
@@ -85,21 +87,22 @@ public final class DataSourceUnitPersistService {
public Collection<MetaDataVersion> persist(final String databaseName,
final Map<String, DataSourcePoolProperties> dataSourcePropsMap) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourcePropsMap.entrySet()) {
- String activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
- List<String> versions =
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getStorageUnitVersionsPath(databaseName,
entry.getKey()));
- String nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ Integer activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getStorageUnitVersionsPath(databaseName,
entry.getKey()));
+ int nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(DataSourceMetaDataNodePath.getStorageUnitVersionPath(databaseName,
entry.getKey(), nextActiveVersion),
YamlEngine.marshal(yamlDataSourceConfigurationSwapper.swapToMap(entry.getValue())));
- if (Strings.isNullOrEmpty(activeVersion)) {
-
repository.persist(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
+ if (null == activeVersion) {
+
repository.persist(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
entry.getKey()), String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
result.add(new
MetaDataVersion(DataSourceMetaDataNodePath.getStorageUnitPath(databaseName,
entry.getKey()), activeVersion, nextActiveVersion));
}
return result;
}
- private String getDataSourceActiveVersion(final String databaseName, final
String dataSourceName) {
- return
repository.query(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
dataSourceName));
+ private Integer getDataSourceActiveVersion(final String databaseName,
final String dataSourceName) {
+ String value =
repository.query(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
dataSourceName));
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
index 5a4cb4db0bb..0fe30357fd5 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/database/DatabaseRulePersistService.java
@@ -90,19 +90,20 @@ public final class DatabaseRulePersistService {
private Collection<MetaDataVersion> persistDataNodes(final String
databaseName, final String ruleName, final Collection<RepositoryTuple>
repositoryTuples) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (RepositoryTuple each : repositoryTuples) {
- List<String> versions =
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNodePath.getVersionsPath(databaseName,
ruleName, each.getKey()));
- String nextVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(DatabaseRuleMetaDataNodePath.getVersionsPath(databaseName,
ruleName, each.getKey()));
+ int nextVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(DatabaseRuleMetaDataNodePath.getVersionPath(databaseName,
ruleName, each.getKey(), nextVersion), each.getValue());
- if (Strings.isNullOrEmpty(getActiveVersion(databaseName, ruleName,
each.getKey()))) {
-
repository.persist(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, each.getKey()), MetaDataVersion.DEFAULT_VERSION);
+ if (null == getActiveVersion(databaseName, ruleName,
each.getKey())) {
+
repository.persist(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, each.getKey()), String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
result.add(new
MetaDataVersion(DatabaseRuleMetaDataNodePath.getRulePath(databaseName,
ruleName, each.getKey()), getActiveVersion(databaseName, ruleName,
each.getKey()), nextVersion));
}
return result;
}
- private String getActiveVersion(final String databaseName, final String
ruleName, final String key) {
- return
repository.query(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, key));
+ private Integer getActiveVersion(final String databaseName, final String
ruleName, final String key) {
+ String value =
repository.query(DatabaseRuleMetaDataNodePath.getActiveVersionPath(databaseName,
ruleName, key));
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
index 58f28640e21..f281252e801 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/GlobalRulePersistService.java
@@ -25,9 +25,9 @@ import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigur
import
org.apache.shardingsphere.mode.metadata.persist.config.RepositoryTuplePersistService;
import
org.apache.shardingsphere.mode.metadata.persist.version.MetaDataVersionPersistService;
import org.apache.shardingsphere.mode.node.path.GlobalRuleNodePath;
-import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
import org.apache.shardingsphere.mode.node.tuple.RepositoryTuple;
import
org.apache.shardingsphere.mode.node.tuple.YamlRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
import java.util.Collection;
import java.util.LinkedList;
@@ -92,15 +92,21 @@ public final class GlobalRulePersistService {
private Collection<MetaDataVersion> persistTuples(final
Collection<RepositoryTuple> repositoryTuples) {
Collection<MetaDataVersion> result = new LinkedList<>();
for (RepositoryTuple each : repositoryTuples) {
- List<String> versions =
metaDataVersionPersistService.getVersions(GlobalRuleNodePath.getVersionRootPath(each.getKey()));
- String nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(GlobalRuleNodePath.getVersionRootPath(each.getKey()));
+ int nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(GlobalRuleNodePath.getVersionPath(each.getKey(),
nextActiveVersion), each.getValue());
String ruleActiveVersionPath =
GlobalRuleNodePath.getActiveVersionPath(each.getKey());
- if
(Strings.isNullOrEmpty(repository.query(ruleActiveVersionPath))) {
- repository.persist(ruleActiveVersionPath,
MetaDataVersion.DEFAULT_VERSION);
+ if (null == getRuleActiveVersion(ruleActiveVersionPath)) {
+ repository.persist(ruleActiveVersionPath,
String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
- result.add(new
MetaDataVersion(GlobalRuleNodePath.getRulePath(each.getKey()),
repository.query(ruleActiveVersionPath), nextActiveVersion));
+ Integer ruleActiveVersion =
getRuleActiveVersion(ruleActiveVersionPath);
+ result.add(new
MetaDataVersion(GlobalRuleNodePath.getRulePath(each.getKey()), null ==
ruleActiveVersion ? MetaDataVersion.DEFAULT_VERSION : ruleActiveVersion,
nextActiveVersion));
}
return result;
}
+
+ private Integer getRuleActiveVersion(final String ruleActiveVersionPath) {
+ String value = repository.query(ruleActiveVersionPath);
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
+ }
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
index b7e9a2959dd..952c9be5a2c 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/config/global/PropertiesPersistService.java
@@ -45,7 +45,8 @@ public final class PropertiesPersistService {
* @return properties
*/
public Properties load() {
- String yamlContent =
repository.query(GlobalPropertiesNodePath.getVersionPath(getActiveVersion()));
+ Integer activeVersion = getActiveVersion();
+ String yamlContent =
repository.query(GlobalPropertiesNodePath.getVersionPath(null == activeVersion
? 0 : activeVersion));
return Strings.isNullOrEmpty(yamlContent) ? new Properties() :
YamlEngine.unmarshal(yamlContent, Properties.class);
}
@@ -55,16 +56,17 @@ public final class PropertiesPersistService {
* @param props properties
*/
public void persist(final Properties props) {
- List<String> versions =
metaDataVersionPersistService.getVersions(GlobalPropertiesNodePath.getVersionRootPath());
- String nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(GlobalPropertiesNodePath.getVersionRootPath());
+ int nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(GlobalPropertiesNodePath.getVersionPath(nextActiveVersion),
YamlEngine.marshal(props));
- if (Strings.isNullOrEmpty(getActiveVersion())) {
-
repository.persist(GlobalPropertiesNodePath.getActiveVersionPath(),
MetaDataVersion.DEFAULT_VERSION);
+ if (null == getActiveVersion()) {
+
repository.persist(GlobalPropertiesNodePath.getActiveVersionPath(),
String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
metaDataVersionPersistService.switchActiveVersion(Collections.singleton(new
MetaDataVersion(GlobalPropertiesNodePath.getRootPath(), getActiveVersion(),
nextActiveVersion)));
}
- private String getActiveVersion() {
- return
repository.query(GlobalPropertiesNodePath.getActiveVersionPath());
+ private Integer getActiveVersion() {
+ String value =
repository.query(GlobalPropertiesNodePath.getActiveVersionPath());
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
index e6598e8b56f..2bbcb12cf58 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/TableMetaDataPersistService.java
@@ -66,7 +66,9 @@ public final class TableMetaDataPersistService {
* @return loaded table
*/
public ShardingSphereTable load(final String databaseName, final String
schemaName, final String tableName) {
- String tableContent =
repository.query(TableMetaDataNodePath.getTableVersionPath(databaseName,
schemaName, tableName, getActiveVersion(databaseName, schemaName, tableName)));
+ Integer activeVersion = getActiveVersion(databaseName, schemaName,
tableName);
+ String tableContent = repository.query(
+ TableMetaDataNodePath.getTableVersionPath(databaseName,
schemaName, tableName, null == activeVersion ? MetaDataVersion.DEFAULT_VERSION
: activeVersion));
return swapper.swapToObject(YamlEngine.unmarshal(tableContent,
YamlShardingSphereTable.class));
}
@@ -81,11 +83,11 @@ public final class TableMetaDataPersistService {
Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
for (ShardingSphereTable each : tables) {
String tableName = each.getName().toLowerCase();
- List<String> versions =
metaDataVersionPersistService.getVersions(TableMetaDataNodePath.getTableVersionsPath(databaseName,
schemaName, tableName));
- String nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(TableMetaDataNodePath.getTableVersionsPath(databaseName,
schemaName, tableName));
+ int nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(TableMetaDataNodePath.getTableVersionPath(databaseName,
schemaName, tableName, nextActiveVersion),
YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
- if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, tableName))) {
-
repository.persist(TableMetaDataNodePath.getTableActiveVersionPath(databaseName,
schemaName, tableName), MetaDataVersion.DEFAULT_VERSION);
+ if (null == getActiveVersion(databaseName, schemaName, tableName))
{
+
repository.persist(TableMetaDataNodePath.getTableActiveVersionPath(databaseName,
schemaName, tableName), String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
metaDataVersions.add(
new
MetaDataVersion(TableMetaDataNodePath.getTablePath(databaseName, schemaName,
tableName), getActiveVersion(databaseName, schemaName, tableName),
nextActiveVersion));
@@ -93,8 +95,9 @@ public final class TableMetaDataPersistService {
metaDataVersionPersistService.switchActiveVersion(metaDataVersions);
}
- private String getActiveVersion(final String databaseName, final String
schemaName, final String tableName) {
- return
repository.query(TableMetaDataNodePath.getTableActiveVersionPath(databaseName,
schemaName, tableName));
+ private Integer getActiveVersion(final String databaseName, final String
schemaName, final String tableName) {
+ String value =
repository.query(TableMetaDataNodePath.getTableActiveVersionPath(databaseName,
schemaName, tableName));
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
index 309ba679724..b86d3a88c8e 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/ViewMetaDataPersistService.java
@@ -65,7 +65,8 @@ public final class ViewMetaDataPersistService {
* @return loaded view
*/
public ShardingSphereView load(final String databaseName, final String
schemaName, final String viewName) {
- String view =
repository.query(ViewMetaDataNodePath.getViewVersionPath(databaseName,
schemaName, viewName, getActiveVersion(databaseName, schemaName, viewName)));
+ Integer activeVersion = getActiveVersion(databaseName, schemaName,
viewName);
+ String view =
repository.query(ViewMetaDataNodePath.getViewVersionPath(databaseName,
schemaName, viewName, null == activeVersion ? MetaDataVersion.DEFAULT_VERSION :
activeVersion));
return swapper.swapToObject(YamlEngine.unmarshal(view,
YamlShardingSphereView.class));
}
@@ -80,19 +81,20 @@ public final class ViewMetaDataPersistService {
Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
for (ShardingSphereView each : views) {
String viewName = each.getName().toLowerCase();
- List<String> versions =
metaDataVersionPersistService.getVersions(ViewMetaDataNodePath.getViewVersionsPath(databaseName,
schemaName, viewName));
- String nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION :
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
+ List<Integer> versions =
metaDataVersionPersistService.getVersions(ViewMetaDataNodePath.getViewVersionsPath(databaseName,
schemaName, viewName));
+ int nextActiveVersion = versions.isEmpty() ?
MetaDataVersion.DEFAULT_VERSION : versions.get(0) + 1;
repository.persist(ViewMetaDataNodePath.getViewVersionPath(databaseName,
schemaName, viewName, nextActiveVersion),
YamlEngine.marshal(swapper.swapToYamlConfiguration(each)));
- if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, viewName))) {
-
repository.persist(ViewMetaDataNodePath.getViewActiveVersionPath(databaseName,
schemaName, viewName), MetaDataVersion.DEFAULT_VERSION);
+ if (null == getActiveVersion(databaseName, schemaName, viewName)) {
+
repository.persist(ViewMetaDataNodePath.getViewActiveVersionPath(databaseName,
schemaName, viewName), String.valueOf(MetaDataVersion.DEFAULT_VERSION));
}
metaDataVersions.add(new
MetaDataVersion(ViewMetaDataNodePath.getViewPath(databaseName, schemaName,
viewName), getActiveVersion(databaseName, schemaName, viewName),
nextActiveVersion));
}
metaDataVersionPersistService.switchActiveVersion(metaDataVersions);
}
- private String getActiveVersion(final String databaseName, final String
schemaName, final String viewName) {
- return
repository.query(ViewMetaDataNodePath.getViewActiveVersionPath(databaseName,
schemaName, viewName));
+ private Integer getActiveVersion(final String databaseName, final String
schemaName, final String viewName) {
+ String value =
repository.query(ViewMetaDataNodePath.getViewActiveVersionPath(databaseName,
schemaName, viewName));
+ return Strings.isNullOrEmpty(value) ? null : Integer.parseInt(value);
}
/**
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 f9c7ae8962e..a5bbfe9e4f8 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
@@ -24,7 +24,9 @@ import
org.apache.shardingsphere.mode.node.path.metadata.DatabaseMetaDataNodePat
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Meta data version persist service.
@@ -45,10 +47,8 @@ public final class MetaDataVersionPersistService {
if
(each.getNextActiveVersion().equals(each.getCurrentActiveVersion())) {
continue;
}
- repository.persist(each.getActiveVersionNodePath(),
each.getNextActiveVersion());
- getVersions(each.getVersionsPath()).stream()
- .filter(version -> Integer.parseInt(version) <
Integer.parseInt(each.getNextActiveVersion()))
- .forEach(version ->
repository.delete(each.getVersionsNodePath(version)));
+ repository.persist(each.getActiveVersionNodePath(),
String.valueOf(each.getNextActiveVersion()));
+ getVersions(each.getVersionsPath()).stream().filter(version ->
version < each.getNextActiveVersion()).forEach(version ->
repository.delete(each.getVersionsNodePath(version)));
}
}
@@ -59,7 +59,7 @@ public final class MetaDataVersionPersistService {
* @param activeVersion active version
* @return version path
*/
- public String getVersionPathByActiveVersion(final String path, final
String activeVersion) {
+ public String getVersionPathByActiveVersion(final String path, final int
activeVersion) {
return repository.query(DatabaseMetaDataNodePath.getVersionPath(path,
activeVersion));
}
@@ -69,11 +69,11 @@ public final class MetaDataVersionPersistService {
* @param path path
* @return versions
*/
- public List<String> getVersions(final String path) {
- List<String> result = repository.getChildrenKeys(path);
+ public List<Integer> getVersions(final String path) {
+ List<Integer> result =
repository.getChildrenKeys(path).stream().map(Integer::parseInt).collect(Collectors.toList());
if (result.size() > 2) {
log.warn("There are multiple versions of: {}, please check the
configuration.", path);
- result.sort((v1, v2) -> Integer.compare(Integer.parseInt(v2),
Integer.parseInt(v1)));
+ result.sort(Collections.reverseOrder());
}
return result;
}
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 eafe5190b3b..1388cb715b7 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
@@ -72,11 +72,11 @@ class DataSourceUnitPersistServiceTest {
List<MetaDataVersion> actual = new
ArrayList<>(persistService.persist("foo_db", dataSourcePropsMap));
assertThat(actual.size(), is(2));
assertThat(actual.get(0).getActiveVersionNodePath(),
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(0).getCurrentActiveVersion(), is(10));
+ assertThat(actual.get(0).getNextActiveVersion(), is(11));
assertThat(actual.get(1).getActiveVersionNodePath(),
is("/metadata/foo_db/data_sources/units/bar_ds/active_version"));
assertNull(actual.get(1).getCurrentActiveVersion());
- assertThat(actual.get(1).getNextActiveVersion(), is("0"));
+ assertThat(actual.get(1).getNextActiveVersion(), is(0));
}
@Test
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 de106745ddc..804edbd88ce 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
@@ -68,7 +68,7 @@ class DatabaseRulePersistServiceTest {
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getKey(),
is("/metadata/foo_db/rules/fixture/fixture"));
assertNull(actual.iterator().next().getCurrentActiveVersion());
- assertThat(actual.iterator().next().getNextActiveVersion(), is("0"));
+ assertThat(actual.iterator().next().getNextActiveVersion(), is(0));
}
@Test
@@ -78,8 +78,8 @@ class DatabaseRulePersistServiceTest {
Collection<MetaDataVersion> actual = persistService.persist("foo_db",
Collections.singleton(new MetaDataRuleConfigurationFixture("test")));
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getKey(),
is("/metadata/foo_db/rules/fixture/fixture"));
- assertThat(actual.iterator().next().getCurrentActiveVersion(),
is("10"));
- assertThat(actual.iterator().next().getNextActiveVersion(), is("11"));
+ assertThat(actual.iterator().next().getCurrentActiveVersion(), is(10));
+ assertThat(actual.iterator().next().getNextActiveVersion(), is(11));
}
@Test
@@ -93,7 +93,7 @@ class DatabaseRulePersistServiceTest {
Collection<MetaDataVersion> actual = persistService.delete("foo_db",
Arrays.asList(new MetaDataRuleConfigurationFixture("test"), new
NoTupleRuleConfigurationFixture("test")));
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getKey(),
is("/metadata/foo_db/rules/fixture/fixture"));
- assertThat(actual.iterator().next().getCurrentActiveVersion(), is(""));
- assertThat(actual.iterator().next().getNextActiveVersion(), is(""));
+ assertNull(actual.iterator().next().getCurrentActiveVersion());
+ assertNull(actual.iterator().next().getNextActiveVersion());
}
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistServiceTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistServiceTest.java
index e959832d541..115b2e52c25 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistServiceTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/version/MetaDataVersionPersistServiceTest.java
@@ -48,7 +48,7 @@ class MetaDataVersionPersistServiceTest {
@Test
void assertSwitchActiveVersion() {
when(repository.getChildrenKeys("foo_db/versions")).thenReturn(Arrays.asList("1",
"0"));
- persistService.switchActiveVersion(Arrays.asList(new
MetaDataVersion("foo_db", "0", "1"), new MetaDataVersion("bar_db", "2", "2")));
+ persistService.switchActiveVersion(Arrays.asList(new
MetaDataVersion("foo_db", 0, 1), new MetaDataVersion("bar_db", 2, 2)));
verify(repository).persist("foo_db/active_version", "1");
verify(repository).delete("foo_db/versions/0");
}
@@ -56,12 +56,12 @@ class MetaDataVersionPersistServiceTest {
@Test
void assertGetVersionPathByActiveVersion() {
when(repository.query("foo_db/versions/1")).thenReturn("foo_path");
-
assertThat(persistService.getVersionPathByActiveVersion("foo_db/active_version",
"1"), is("foo_path"));
+
assertThat(persistService.getVersionPathByActiveVersion("foo_db/active_version",
1), is("foo_path"));
}
@Test
void assertGetVersions() {
when(repository.getChildrenKeys("foo_db/versions")).thenReturn(Arrays.asList("1",
"0", "2", "10"));
- assertThat(persistService.getVersions("foo_db/versions"),
is(Arrays.asList("10", "2", "1", "0")));
+ assertThat(persistService.getVersions("foo_db/versions"),
is(Arrays.asList(10, 2, 1, 0)));
}
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePath.java
index 23a4ff0935c..cb9276f3a71 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePath.java
@@ -59,8 +59,8 @@ public final class GlobalPropertiesNodePath {
* @param version version
* @return properties version path
*/
- public static String getVersionPath(final String version) {
- return String.join("/", getVersionRootPath(), version);
+ public static String getVersionPath(final int version) {
+ return String.join("/", getVersionRootPath(), String.valueOf(version));
}
/**
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePath.java
index c90b8747ad9..838d7067c2c 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePath.java
@@ -76,8 +76,8 @@ public final class GlobalRuleNodePath {
* @param version version
* @return global rule version path
*/
- public static String getVersionPath(final String ruleTypeName, final
String version) {
- return String.join("/", getVersionRootPath(ruleTypeName), version);
+ public static String getVersionPath(final String ruleTypeName, final int
version) {
+ return String.join("/", getVersionRootPath(ruleTypeName),
String.valueOf(version));
}
/**
@@ -110,7 +110,7 @@ public final class GlobalRuleNodePath {
* @return found version
*/
public static Optional<String> findVersion(final String ruleTypeName,
final String path) {
- Pattern pattern = Pattern.compile(getVersionPath(ruleTypeName,
VERSION_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(String.join("/",
getVersionRootPath(ruleTypeName), VERSION_PATTERN) + "$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(1)) :
Optional.empty();
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java
index da7a6f575d8..3f603240b06 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePath.java
@@ -104,8 +104,8 @@ public final class DataSourceMetaDataNodePath {
* @param version version
* @return storage unit version path
*/
- public static String getStorageUnitVersionPath(final String databaseName,
final String storageUnitName, final String version) {
- return String.join("/", getStorageUnitVersionsPath(databaseName,
storageUnitName), version);
+ public static String getStorageUnitVersionPath(final String databaseName,
final String storageUnitName, final int version) {
+ return String.join("/", getStorageUnitVersionsPath(databaseName,
storageUnitName), String.valueOf(version));
}
/**
@@ -141,18 +141,6 @@ public final class DataSourceMetaDataNodePath {
return String.join("/", getStorageNodesPath(databaseName),
storageNodeName, VERSIONS_NODE);
}
- /**
- * Get storage node version path.
- *
- * @param databaseName database name
- * @param storageNodeName storage node name
- * @param version version
- * @return storage node version path
- */
- public static String getStorageNodeVersionPath(final String databaseName,
final String storageNodeName, final String version) {
- return String.join("/", getStorageNodeVersionsPath(databaseName,
storageNodeName), version);
- }
-
/**
* Get storage node active version path.
*
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java
index d2700824540..bc9be176c4f 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseMetaDataNodePath.java
@@ -87,7 +87,7 @@ public final class DatabaseMetaDataNodePath {
* @param activeVersion active version
* @return version path
*/
- public static String getVersionPath(final String rulePath, final String
activeVersion) {
+ public static String getVersionPath(final String rulePath, final int
activeVersion) {
return rulePath.replace(ACTIVE_VERSION_NODE, VERSIONS_NODE) + "/" +
activeVersion;
}
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java
index 292c83fae93..984e171665e 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePath.java
@@ -88,8 +88,8 @@ public final class DatabaseRuleMetaDataNodePath {
* @param version version
* @return database rule next version
*/
- public static String getVersionPath(final String databaseName, final
String ruleTypeName, final String key, final String version) {
- return String.join("/", getVersionsPath(databaseName, ruleTypeName,
key), version);
+ public static String getVersionPath(final String databaseName, final
String ruleTypeName, final String key, final int version) {
+ return String.join("/", getVersionsPath(databaseName, ruleTypeName,
key), String.valueOf(version));
}
/**
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
index 3e7af84340b..86d5ca54858 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePath.java
@@ -100,8 +100,8 @@ public final class TableMetaDataNodePath {
* @param version version
* @return table version path
*/
- public static String getTableVersionPath(final String databaseName, final
String schemaName, final String tableName, final String version) {
- return String.join("/", getTableVersionsPath(databaseName, schemaName,
tableName), version);
+ public static String getTableVersionPath(final String databaseName, final
String schemaName, final String tableName, final int version) {
+ return String.join("/", getTableVersionsPath(databaseName, schemaName,
tableName), String.valueOf(version));
}
/**
diff --git
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java
index 447bab68ea8..8ff188d8f24 100644
---
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java
+++
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePath.java
@@ -100,8 +100,8 @@ public final class ViewMetaDataNodePath {
* @param version version
* @return view version path
*/
- public static String getViewVersionPath(final String databaseName, final
String schemaName, final String viewName, final String version) {
- return String.join("/", getViewVersionsPath(databaseName, schemaName,
viewName), version);
+ public static String getViewVersionPath(final String databaseName, final
String schemaName, final String viewName, final int version) {
+ return String.join("/", getViewVersionsPath(databaseName, schemaName,
viewName), String.valueOf(version));
}
/**
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/DatabaseMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/DatabaseMetaDataNodePathTest.java
index 1426b5779b1..69da23d0cc7 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/DatabaseMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/DatabaseMetaDataNodePathTest.java
@@ -52,7 +52,7 @@ class DatabaseMetaDataNodePathTest {
@Test
void assertGetVersionPath() {
- assertThat(DatabaseMetaDataNodePath.getVersionPath("foo_rule", "1"),
is("foo_rule/1"));
+ assertThat(DatabaseMetaDataNodePath.getVersionPath("foo_rule", 1),
is("foo_rule/1"));
}
@Test
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePathTest.java
index d7b3c1d0d36..69b82a41b77 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalPropertiesNodePathTest.java
@@ -37,7 +37,7 @@ class GlobalPropertiesNodePathTest {
@Test
void assertGetVersionPath() {
- assertThat(GlobalPropertiesNodePath.getVersionPath("0"),
is("/props/versions/0"));
+ assertThat(GlobalPropertiesNodePath.getVersionPath(0),
is("/props/versions/0"));
}
@Test
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePathTest.java
index c340dc870ec..7ed8a506f68 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/GlobalRuleNodePathTest.java
@@ -44,7 +44,7 @@ class GlobalRuleNodePathTest {
@Test
void assertGetVersionPath() {
- assertThat(GlobalRuleNodePath.getVersionPath("foo_rule", "0"),
is("/rules/foo_rule/versions/0"));
+ assertThat(GlobalRuleNodePath.getVersionPath("foo_rule", 0),
is("/rules/foo_rule/versions/0"));
}
@Test
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePathTest.java
index 9237f0b039e..d6c9e664e2b 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DataSourceMetaDataNodePathTest.java
@@ -55,7 +55,7 @@ class DataSourceMetaDataNodePathTest {
@Test
void assertGetStorageUnitVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getStorageUnitVersionPath("foo_db",
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
+
assertThat(DataSourceMetaDataNodePath.getStorageUnitVersionPath("foo_db",
"foo_ds", 0), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
}
@Test
@@ -73,11 +73,6 @@ class DataSourceMetaDataNodePathTest {
assertThat(DataSourceMetaDataNodePath.getStorageNodeVersionsPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
}
- @Test
- void assertGetStorageNodeVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getStorageNodeVersionPath("foo_db",
"foo_ds", "1"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions/1"));
- }
-
@Test
void assertGetStorageNodeActiveVersionPath() {
assertThat(DataSourceMetaDataNodePath.getStorageNodeActiveVersionPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/active_version"));
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePathTest.java
index b118a6f0ae0..e5ae9215866 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/DatabaseRuleMetaDataNodePathTest.java
@@ -46,7 +46,7 @@ class DatabaseRuleMetaDataNodePathTest {
@Test
void assertGetVersionPath() {
- assertThat(DatabaseRuleMetaDataNodePath.getVersionPath("foo_db",
"foo_rule", "foo_tbl", "1"),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
+ assertThat(DatabaseRuleMetaDataNodePath.getVersionPath("foo_db",
"foo_rule", "foo_tbl", 1),
is("/metadata/foo_db/rules/foo_rule/foo_tbl/versions/1"));
}
@Test
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
index f588f8108e2..275e1873929 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/TableMetaDataNodePathTest.java
@@ -45,7 +45,7 @@ class TableMetaDataNodePathTest {
@Test
void assertGetTableVersionPath() {
- assertThat(TableMetaDataNodePath.getTableVersionPath("foo_db",
"foo_schema", "foo_tbl", "0"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/versions/0"));
+ assertThat(TableMetaDataNodePath.getTableVersionPath("foo_db",
"foo_schema", "foo_tbl", 0),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_tbl/versions/0"));
}
@Test
diff --git
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePathTest.java
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePathTest.java
index 4cc6c839933..0d645bdd97b 100644
---
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePathTest.java
+++
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/metadata/ViewMetaDataNodePathTest.java
@@ -45,7 +45,7 @@ class ViewMetaDataNodePathTest {
@Test
void assertGetViewVersionPath() {
- assertThat(ViewMetaDataNodePath.getViewVersionPath("foo_db",
"foo_schema", "foo_view", "0"),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
+ assertThat(ViewMetaDataNodePath.getViewVersionPath("foo_db",
"foo_schema", "foo_view", 0),
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
}
@Test
diff --git
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterNamedRuleItem.java
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterNamedRuleItem.java
index 0b796fbb7dd..0e9c6095424 100644
---
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterNamedRuleItem.java
+++
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterNamedRuleItem.java
@@ -33,7 +33,7 @@ public final class AlterNamedRuleItem implements
AlterRuleItem {
private final String activeVersionKey;
- private final String activeVersion;
+ private final int activeVersion;
private final String type;
}
diff --git
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterRuleItem.java
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterRuleItem.java
index a8667df83c6..e3caa307f49 100644
---
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterRuleItem.java
+++
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterRuleItem.java
@@ -43,5 +43,5 @@ public interface AlterRuleItem extends RuleChangedItem {
*
* @return active version
*/
- String getActiveVersion();
+ int getActiveVersion();
}
diff --git
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterUniqueRuleItem.java
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterUniqueRuleItem.java
index db076981cef..d9a70b4c448 100644
---
a/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterUniqueRuleItem.java
+++
b/mode/spi/src/main/java/org/apache/shardingsphere/mode/spi/rule/item/alter/AlterUniqueRuleItem.java
@@ -31,7 +31,7 @@ public final class AlterUniqueRuleItem implements
AlterRuleItem {
private final String activeVersionKey;
- private final String activeVersion;
+ private final int activeVersion;
private final String type;
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java
index 053c1612e26..572d22272c3 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/NamedRuleItemChangedHandler.java
@@ -48,7 +48,7 @@ public final class NamedRuleItemChangedHandler {
public void handle(final RuleNodePath ruleNodePath, final String
databaseName, final String itemName, final String path, final DataChangedEvent
event) throws SQLException {
String type = ruleNodePath.getRoot().getRuleType() + "." + path;
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new
AlterNamedRuleItem(databaseName, itemName, event.getKey(), event.getValue(),
type));
+
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new
AlterNamedRuleItem(databaseName, itemName, event.getKey(),
Integer.parseInt(event.getValue()), type));
} else if (Type.DELETED == event.getType()) {
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new
DropNamedRuleItem(databaseName, itemName, type));
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java
index a1ae4b4645a..8a40f7290b6 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/type/UniqueRuleItemChangedHandler.java
@@ -47,7 +47,7 @@ public final class UniqueRuleItemChangedHandler {
public void handle(final RuleNodePath ruleNodePath, final String
databaseName, final String path, final DataChangedEvent event) throws
SQLException {
String type = ruleNodePath.getRoot().getRuleType() + "." + path;
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new
AlterUniqueRuleItem(databaseName, event.getKey(), event.getValue(), type));
+
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().alter(new
AlterUniqueRuleItem(databaseName, event.getKey(),
Integer.parseInt(event.getValue()), type));
} else if (Type.DELETED == event.getType()) {
contextManager.getMetaDataContextManager().getDatabaseRuleItemManager().drop(new
DropUniqueRuleItem(databaseName, type));
}
diff --git
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java
index c89e54050d7..09546d8be57 100644
---
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java
+++
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/rule/RuleConfigurationChangedHandlerTest.java
@@ -92,13 +92,13 @@ class RuleConfigurationChangedHandlerTest {
@Test
void assertHandleWithNamedRuleItemAdded() throws SQLException {
- handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version",
"foo", Type.ADDED));
+ handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version",
"0", Type.ADDED));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterNamedRuleItem.class));
}
@Test
void assertHandleWithNamedRuleItemAltered() throws SQLException {
- handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version",
"foo", Type.UPDATED));
+ handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/named/xxx/active_version",
"0", Type.UPDATED));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterNamedRuleItem.class));
}
@@ -110,13 +110,13 @@ class RuleConfigurationChangedHandlerTest {
@Test
void assertHandleWithUniqueRuleItemAdded() throws SQLException {
- handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version",
"foo", Type.ADDED));
+ handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version", "0",
Type.ADDED));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterUniqueRuleItem.class));
}
@Test
void assertHandleWithUniqueRuleItemAltered() throws SQLException {
- handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version",
"foo", Type.UPDATED));
+ handler.handle("foo_db", new
DataChangedEvent("/metadata/fixture/rules/fixture/unique/active_version", "0",
Type.UPDATED));
verify(contextManager.getMetaDataContextManager().getDatabaseRuleItemManager()).alter(any(AlterUniqueRuleItem.class));
}
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 8affa2e3a8f..f6138390ad9 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
@@ -17,18 +17,17 @@
package org.apache.shardingsphere.mode.manager.standalone.changed;
-import com.google.common.base.Strings;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import org.apache.shardingsphere.mode.node.path.rule.RuleNodePath;
import
org.apache.shardingsphere.mode.node.path.rule.item.NamedRuleItemNodePath;
import
org.apache.shardingsphere.mode.node.path.rule.item.UniqueRuleItemNodePath;
+import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider;
+import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem;
import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterNamedRuleItem;
import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterUniqueRuleItem;
import org.apache.shardingsphere.mode.spi.rule.item.drop.DropNamedRuleItem;
import org.apache.shardingsphere.mode.spi.rule.item.drop.DropUniqueRuleItem;
-import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem;
-import org.apache.shardingsphere.mode.node.spi.RuleNodePathProvider;
import java.util.Map.Entry;
import java.util.Optional;
@@ -47,7 +46,7 @@ public final class RuleItemChangedBuilder {
* @param changedType data changed type
* @return built rule item
*/
- public Optional<RuleChangedItem> build(final String databaseName, final
String activeVersionKey, final String activeVersion, final Type changedType) {
+ public Optional<RuleChangedItem> build(final String databaseName, final
String activeVersionKey, final Integer activeVersion, final Type changedType) {
for (RuleNodePathProvider each :
ShardingSphereServiceLoader.getServiceInstances(RuleNodePathProvider.class)) {
Optional<RuleChangedItem> result = build(each.getRuleNodePath(),
databaseName, activeVersionKey, activeVersion, changedType);
if (result.isPresent()) {
@@ -57,8 +56,8 @@ public final class RuleItemChangedBuilder {
return Optional.empty();
}
- private Optional<RuleChangedItem> build(final RuleNodePath ruleNodePath,
final String databaseName, final String activeVersionKey, final String
activeVersion, final Type changedType) {
- if (!ruleNodePath.getRoot().isValidatedPath(activeVersionKey) ||
Type.DELETED != changedType && Strings.isNullOrEmpty(activeVersion)) {
+ private Optional<RuleChangedItem> build(final RuleNodePath ruleNodePath,
final String databaseName, final String activeVersionKey, final Integer
activeVersion, final Type changedType) {
+ if (!ruleNodePath.getRoot().isValidatedPath(activeVersionKey) ||
Type.DELETED != changedType && null == activeVersion) {
return Optional.empty();
}
for (Entry<String, NamedRuleItemNodePath> entry :
ruleNodePath.getNamedItems().entrySet()) {
@@ -80,13 +79,13 @@ public final class RuleItemChangedBuilder {
return Optional.empty();
}
- private RuleChangedItem create(final String databaseName, final String
itemName, final String activeVersionKey, final String activeVersion, final Type
changedType, final String type) {
+ private RuleChangedItem create(final String databaseName, final String
itemName, final String activeVersionKey, final Integer activeVersion, final
Type changedType, final String type) {
return Type.ADDED == changedType || Type.UPDATED == changedType
? new AlterNamedRuleItem(databaseName, itemName,
activeVersionKey, activeVersion, type)
: new DropNamedRuleItem(databaseName, itemName, type);
}
- private RuleChangedItem create(final String databaseName, final String
activeVersionKey, final String activeVersion, final Type changedType, final
String type) {
+ private RuleChangedItem create(final String databaseName, final String
activeVersionKey, final Integer activeVersion, final Type changedType, final
String type) {
return Type.ADDED == changedType || Type.UPDATED == changedType
? new AlterUniqueRuleItem(databaseName, activeVersionKey,
activeVersion, type)
: new DropUniqueRuleItem(databaseName, type);