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 b521a8acb4c Refactor DataSourceMetaDataNodePath (#34294)
b521a8acb4c is described below
commit b521a8acb4c81dbd20d5e35000b33f7a79043cf7
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 10 01:01:11 2025 +0800
Refactor DataSourceMetaDataNodePath (#34294)
* Refactor DataSourceMetaDataNodePath
* Refactor DataSourceMetaDataNodePath
---
.../node/metadata/DataSourceMetaDataNodePath.java | 188 +++++++++------------
.../database/DataSourceNodePersistService.java | 16 +-
.../database/DataSourceUnitPersistService.java | 16 +-
.../metadata/DataSourceMetaDataNodePathTest.java | 95 +++++------
.../database/metadata/MetaDataChangedHandler.java | 52 +++---
5 files changed, 164 insertions(+), 203 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
index c04edad6b8b..620f684a8a4 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
@@ -34,225 +34,191 @@ public final class DataSourceMetaDataNodePath {
private static final String DATA_SOURCES_NODE = "data_sources";
- private static final String DATA_SOURCE_NODES_NODE = "nodes";
+ private static final String NODES_NODE = "nodes";
- private static final String DATA_SOURCE_UNITS_NODE = "units";
+ private static final String UNITS_NODE = "units";
private static final String VERSIONS_NODE = "versions";
private static final String ACTIVE_VERSION_NODE = "active_version";
- private static final String DATABASE_DATA_SOURCES_NODE =
"/([\\w\\-]+)/data_sources/";
-
- private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
-
- private static final String DATA_SOURCE_SUFFIX = "/([\\w\\-]+)$";
+ private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)";
/**
- * Get data source units path.
+ * Get data source root path.
*
* @param databaseName database name
- * @return data sources path
+ * @return data source root path
*/
- public static String getDataSourceUnitsPath(final String databaseName) {
- return String.join("/", ROOT_NODE, databaseName, DATA_SOURCES_NODE,
DATA_SOURCE_UNITS_NODE);
+ public static String getDataSourceRootPath(final String databaseName) {
+ return String.join("/", ROOT_NODE, databaseName, DATA_SOURCES_NODE);
}
/**
- * Get data source nodes path.
+ * Get storage units path.
*
* @param databaseName database name
- * @return data sources path
+ * @return storage units path
*/
- public static String getDataSourceNodesPath(final String databaseName) {
- return String.join("/", ROOT_NODE, databaseName, DATA_SOURCES_NODE,
DATA_SOURCE_NODES_NODE);
+ public static String getStorageUnitsPath(final String databaseName) {
+ return String.join("/", getDataSourceRootPath(databaseName),
UNITS_NODE);
}
/**
- * Get data source unit path.
+ * Get storage nodes path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source path
+ * @return storage nodes path
*/
- public static String getDataSourceUnitPath(final String databaseName,
final String dataSourceName) {
- return String.join("/", getDataSourceUnitsPath(databaseName),
dataSourceName);
+ public static String getStorageNodesPath(final String databaseName) {
+ return String.join("/", getDataSourceRootPath(databaseName),
NODES_NODE);
}
/**
- * Get data source node path.
+ * Get storage unit path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source path
+ * @param storageUnitName storage unit name
+ * @return storage unit path
*/
- public static String getDataSourceNodePath(final String databaseName,
final String dataSourceName) {
- return String.join("/", getDataSourceNodesPath(databaseName),
dataSourceName);
+ public static String getStorageUnitPath(final String databaseName, final
String storageUnitName) {
+ return String.join("/", getStorageUnitsPath(databaseName),
storageUnitName);
}
/**
- * Get data source unit version path.
+ * Get storage node path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @param version version
- * @return data source unit version path
+ * @param storageNodeName storage node name
+ * @return storage node path
*/
- public static String getDataSourceUnitVersionPath(final String
databaseName, final String dataSourceName, final String version) {
- return String.join("/", getDataSourceUnitVersionsPath(databaseName,
dataSourceName), version);
+ public static String getStorageNodePath(final String databaseName, final
String storageNodeName) {
+ return String.join("/", getStorageNodesPath(databaseName),
storageNodeName);
}
/**
- * Get data source unit versions path.
+ * Get storage unit version path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source versions path
+ * @param storageUnitName storage unit name
+ * @param version version
+ * @return storage unit version path
*/
- public static String getDataSourceUnitVersionsPath(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceUnitsPath(databaseName),
dataSourceName, VERSIONS_NODE);
+ public static String getStorageUnitVersionPath(final String databaseName,
final String storageUnitName, final String version) {
+ return String.join("/", getStorageUnitVersionsPath(databaseName,
storageUnitName), version);
}
/**
- * Get data source unit active version path.
+ * Get storage unit versions path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source active version path
+ * @param dataSourceName storage unit name
+ * @return storage unit versions path
*/
- public static String getDataSourceUnitActiveVersionPath(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceUnitsPath(databaseName),
dataSourceName, ACTIVE_VERSION_NODE);
+ public static String getStorageUnitVersionsPath(final String databaseName,
final String dataSourceName) {
+ return String.join("/", getStorageUnitsPath(databaseName),
dataSourceName, VERSIONS_NODE);
}
/**
- * Get data source node versions path.
+ * Get storage unit active version path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source versions path
+ * @param dataSourceName storage unit name
+ * @return storage unit active version path
*/
- public static String getDataSourceNodeVersionsPath(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceNodesPath(databaseName),
dataSourceName, VERSIONS_NODE);
+ public static String getStorageUnitActiveVersionPath(final String
databaseName, final String dataSourceName) {
+ return String.join("/", getStorageUnitsPath(databaseName),
dataSourceName, ACTIVE_VERSION_NODE);
}
/**
- * Get data source node version path.
+ * Get storage node versions path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @param version version
- * @return data source node version path
+ * @param storageNodeName storage node name
+ * @return storage node versions path
*/
- public static String getDataSourceNodeVersionPath(final String
databaseName, final String dataSourceName, final String version) {
- return String.join("/", getDataSourceNodeVersionsPath(databaseName,
dataSourceName), version);
+ public static String getStorageNodeVersionsPath(final String databaseName,
final String storageNodeName) {
+ return String.join("/", getStorageNodesPath(databaseName),
storageNodeName, VERSIONS_NODE);
}
/**
- * Get data source node active version path.
+ * Get storage node version path.
*
* @param databaseName database name
- * @param dataSourceName data source name
- * @return data source active version path
+ * @param storageNodeName storage node name
+ * @param version version
+ * @return storage node version path
*/
- public static String getDataSourceNodeActiveVersionPath(final String
databaseName, final String dataSourceName) {
- return String.join("/", getDataSourceNodesPath(databaseName),
dataSourceName, ACTIVE_VERSION_NODE);
+ public static String getStorageNodeVersionPath(final String databaseName,
final String storageNodeName, final String version) {
+ return String.join("/", getStorageNodeVersionsPath(databaseName,
storageNodeName), version);
}
/**
- * Is data sources path.
+ * Get storage node active version path.
*
- * @param path path
- * @return true or false
+ * @param databaseName database name
+ * @param storageNodeName storage node name
+ * @return storage node active version path
*/
- public static boolean isDataSourcesPath(final String path) {
- return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + "?",
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ public static String getStorageNodeActiveVersionPath(final String
databaseName, final String storageNodeName) {
+ return String.join("/", getStorageNodesPath(databaseName),
storageNodeName, ACTIVE_VERSION_NODE);
}
/**
- * Find data source name by data source unit active version path.
+ * Find storage unit name by active version path.
*
* @param path path
- * @return found data source name
+ * @return found storage unit name
*/
- public static Optional<String>
findDataSourceNameByDataSourceUnitActiveVersionPath(final String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ public static Optional<String>
findStorageUnitNameByActiveVersionPath(final String path) {
+ Pattern pattern =
Pattern.compile(getStorageUnitActiveVersionPath(IDENTIFIER_PATTERN,
IDENTIFIER_PATTERN), Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
/**
- * Find data source name by data source unit path.
+ * Find storage unit name by storage unit path.
*
* @param path path
- * @return data source name
+ * @return found storage unit name
*/
- public static Optional<String>
findDataSourceNameByDataSourceUnitPath(final String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ public static Optional<String> findStorageUnitNameByStorageUnitPath(final
String path) {
+ Pattern pattern =
Pattern.compile(getStorageUnitPath(IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) +
"$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
/**
- * Find data source name by data source node active version path.
+ * Find storage node name by active version path.
*
* @param path path
- * @return data source name
+ * @return found storage unit name
*/
- public static Optional<String>
findDataSourceNameByDataSourceNodeActiveVersionPath(final String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ public static Optional<String>
findStorageNodeNameByActiveVersionPath(final String path) {
+ Pattern pattern =
Pattern.compile(getStorageNodeActiveVersionPath(IDENTIFIER_PATTERN,
IDENTIFIER_PATTERN), Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
/**
- * Find data source name by data source path.
+ * Find storage node name by storage node path.
*
* @param path path
- * @return data source name
+ * @return found storage unit name
*/
- public static Optional<String>
findDataSourceNameByDataSourceNodePath(final String path) {
- Pattern pattern = Pattern.compile(ROOT_NODE +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ public static Optional<String> findStorageNodeNameByStorageNodePath(final
String path) {
+ Pattern pattern =
Pattern.compile(getStorageNodePath(IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) +
"$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
/**
- * Is data source unit active version path.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourceUnitActiveVersionPath(final String path)
{
- return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE +
DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Is data source unit path.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourceUnitPath(final String path) {
- return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE +
DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Is data source node active version path.
- *
- * @param path path
- * @return true or false
- */
- public static boolean isDataSourceNodeActiveVersionPath(final String path)
{
- return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE +
DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
- }
-
- /**
- * Is data source node path.
+ * Is data source root path.
*
* @param path path
* @return true or false
*/
- public static boolean isDataSourceNodePath(final String path) {
- return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE +
DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ public static boolean isDataSourceRootPath(final String path) {
+ return Pattern.compile(getDataSourceRootPath(IDENTIFIER_PATTERN) +
"?", Pattern.CASE_INSENSITIVE).matcher(path).find();
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
index fabf578c6de..6327eb582e1 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
@@ -54,10 +54,10 @@ public final class DataSourceNodePersistService {
*/
@SuppressWarnings("unchecked")
public Map<String, DataSourcePoolProperties> load(final String
databaseName) {
- Collection<String> childrenKeys =
repository.getChildrenKeys(DataSourceMetaDataNodePath.getDataSourceNodesPath(databaseName));
+ Collection<String> childrenKeys =
repository.getChildrenKeys(DataSourceMetaDataNodePath.getStorageNodesPath(databaseName));
Map<String, DataSourcePoolProperties> result = new
LinkedHashMap<>(childrenKeys.size(), 1F);
for (String each : childrenKeys) {
- String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
+ String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getStorageNodeVersionPath(databaseName,
each, getDataSourceActiveVersion(databaseName, each)));
if (!Strings.isNullOrEmpty(dataSourceValue)) {
result.put(each, new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class)));
}
@@ -74,7 +74,7 @@ public final class DataSourceNodePersistService {
*/
@SuppressWarnings("unchecked")
public DataSourcePoolProperties load(final String databaseName, final
String dataSourceName) {
- String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
+ String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getStorageNodeVersionPath(databaseName,
dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
return new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class));
}
@@ -87,18 +87,18 @@ public final class DataSourceNodePersistService {
public void persist(final String databaseName, final Map<String,
DataSourcePoolProperties> dataSourceConfigs) {
for (Entry<String, DataSourcePoolProperties> entry :
dataSourceConfigs.entrySet()) {
String activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
- List<String> versions =
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getDataSourceNodeVersionsPath(databaseName,
entry.getKey()));
-
repository.persist(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
entry.getKey(), versions.isEmpty()
+ List<String> versions =
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getStorageNodeVersionsPath(databaseName,
entry.getKey()));
+
repository.persist(DataSourceMetaDataNodePath.getStorageNodeVersionPath(databaseName,
entry.getKey(), versions.isEmpty()
? MetaDataVersion.DEFAULT_VERSION
: String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(activeVersion)) {
-
repository.persist(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath(databaseName,
entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNodePath.getStorageNodeActiveVersionPath(databaseName,
entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
}
}
}
private String getDataSourceActiveVersion(final String databaseName, final
String dataSourceName) {
- return
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath(databaseName,
dataSourceName));
+ return
repository.query(DataSourceMetaDataNodePath.getStorageNodeActiveVersionPath(databaseName,
dataSourceName));
}
/**
@@ -108,6 +108,6 @@ public final class DataSourceNodePersistService {
* @param dataSourceName data source name
*/
public void delete(final String databaseName, final String dataSourceName)
{
-
repository.delete(DataSourceMetaDataNodePath.getDataSourceNodePath(databaseName,
dataSourceName));
+
repository.delete(DataSourceMetaDataNodePath.getStorageNodePath(databaseName,
dataSourceName));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
index 5fd34ee57c5..b546fe5fcba 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
@@ -55,7 +55,7 @@ public final class DataSourceUnitPersistService {
* @return data source pool properties map
*/
public Map<String, DataSourcePoolProperties> load(final String
databaseName) {
- Collection<String> childrenKeys =
repository.getChildrenKeys(DataSourceMetaDataNodePath.getDataSourceUnitsPath(databaseName));
+ Collection<String> childrenKeys =
repository.getChildrenKeys(DataSourceMetaDataNodePath.getStorageUnitsPath(databaseName));
return childrenKeys.stream().collect(Collectors.toMap(each -> each,
each -> load(databaseName, each), (a, b) -> b, () -> new
LinkedHashMap<>(childrenKeys.size(), 1F)));
}
@@ -68,7 +68,7 @@ public final class DataSourceUnitPersistService {
*/
@SuppressWarnings("unchecked")
public DataSourcePoolProperties load(final String databaseName, final
String dataSourceName) {
- String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath(databaseName,
dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
+ String dataSourceValue =
repository.query(DataSourceMetaDataNodePath.getStorageUnitVersionPath(databaseName,
dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
return new
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
Map.class));
}
@@ -83,20 +83,20 @@ public final class DataSourceUnitPersistService {
Collection<MetaDataVersion> result = new LinkedList<>();
for (Entry<String, DataSourcePoolProperties> entry :
dataSourcePropsMap.entrySet()) {
String activeVersion = getDataSourceActiveVersion(databaseName,
entry.getKey());
- List<String> versions =
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getDataSourceUnitVersionsPath(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);
-
repository.persist(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath(databaseName,
entry.getKey(), nextActiveVersion),
+
repository.persist(DataSourceMetaDataNodePath.getStorageUnitVersionPath(databaseName,
entry.getKey(), nextActiveVersion),
YamlEngine.marshal(new
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
if (Strings.isNullOrEmpty(activeVersion)) {
-
repository.persist(DataSourceMetaDataNodePath.getDataSourceUnitActiveVersionPath(databaseName,
entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
+
repository.persist(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(DataSourceMetaDataNodePath.getDataSourceUnitPath(databaseName,
entry.getKey()), activeVersion, nextActiveVersion));
+ 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.getDataSourceUnitActiveVersionPath(databaseName,
dataSourceName));
+ return
repository.query(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath(databaseName,
dataSourceName));
}
/**
@@ -106,6 +106,6 @@ public final class DataSourceUnitPersistService {
* @param dataSourceName data source name
*/
public void delete(final String databaseName, final String dataSourceName)
{
-
repository.delete(DataSourceMetaDataNodePath.getDataSourceUnitPath(databaseName,
dataSourceName));
+
repository.delete(DataSourceMetaDataNodePath.getStorageUnitPath(databaseName,
dataSourceName));
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
index 778a54775ba..09f78de50fd 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
@@ -29,125 +29,110 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
class DataSourceMetaDataNodePathTest {
@Test
- void assertGetDataSourceUnitsPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitsPath("foo_db"),
is("/metadata/foo_db/data_sources/units"));
+ void assertGetDataSourceRootPath() {
+ assertThat(DataSourceMetaDataNodePath.getDataSourceRootPath("foo_db"),
is("/metadata/foo_db/data_sources"));
}
@Test
- void assertGetDataSourceNodesPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceNodesPath("foo_db"),
is("/metadata/foo_db/data_sources/nodes"));
+ void assertGetStorageUnitsPath() {
+ assertThat(DataSourceMetaDataNodePath.getStorageUnitsPath("foo_db"),
is("/metadata/foo_db/data_sources/units"));
}
@Test
- void assertGetDataSourceUnitPath() {
- assertThat(DataSourceMetaDataNodePath.getDataSourceUnitPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
+ void assertGetStorageNodesPath() {
+ assertThat(DataSourceMetaDataNodePath.getStorageNodesPath("foo_db"),
is("/metadata/foo_db/data_sources/nodes"));
}
@Test
- void assertGetDataSourceNodePath() {
- assertThat(DataSourceMetaDataNodePath.getDataSourceNodePath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds"));
+ void assertGetStorageUnitPath() {
+ assertThat(DataSourceMetaDataNodePath.getStorageUnitPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
}
@Test
- void assertGetDataSourceUnitVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath("foo_db",
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
+ void assertGetStorageNodePath() {
+ assertThat(DataSourceMetaDataNodePath.getStorageNodePath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds"));
}
@Test
- void assertGetDataSourceUnitVersionsPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitVersionsPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
+ void assertGetStorageUnitVersionPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageUnitVersionPath("foo_db",
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
}
@Test
- void assertGetDataSourceUnitActiveVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitActiveVersionPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
+ void assertGetStorageUnitVersionsPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageUnitVersionsPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
}
@Test
- void assertGetDataSourceNodeVersionsPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeVersionsPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
+ void assertGetStorageUnitActiveVersionPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageUnitActiveVersionPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
}
@Test
- void assertGetDataSourceNodeVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath("foo_db",
"foo_ds", "1"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions/1"));
+ void assertGetStorageNodeVersionsPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageNodeVersionsPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
}
@Test
- void assertGetDataSourceNodeActiveVersionPath() {
-
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/active_version"));
+ void assertGetStorageNodeVersionPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageNodeVersionPath("foo_db",
"foo_ds", "1"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions/1"));
}
@Test
- void assertIsDataSourcesPath() {
-
assertTrue(DataSourceMetaDataNodePath.isDataSourcesPath("/metadata/logic_db/data_sources/foo_ds"));
+ void assertGetStorageNodeActiveVersionPath() {
+
assertThat(DataSourceMetaDataNodePath.getStorageNodeActiveVersionPath("foo_db",
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/active_version"));
}
@Test
- void assertFindDataSourceNameByDataSourceUnitActiveVersionPath() {
- Optional<String> actual =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath("/metadata/logic_db/data_sources/units/foo_ds/active_version");
+ void assertFindStorageUnitNameByActiveVersionPath() {
+ Optional<String> actual =
DataSourceMetaDataNodePath.findStorageUnitNameByActiveVersionPath("/metadata/foo_db/data_sources/units/foo_ds/active_version");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_ds"));
}
@Test
- void assertFindDataSourceNameByDataSourceUnitActiveVersionPathIfNotFound()
{
-
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath("/xxx/logic_db/data_sources/units/foo_ds/active_version").isPresent());
+ void assertFindStorageUnitNameByActiveVersionPathIfNotFound() {
+
assertFalse(DataSourceMetaDataNodePath.findStorageUnitNameByActiveVersionPath("/xxx/foo_db/data_sources/units/foo_ds/active_version").isPresent());
}
@Test
- void assertFindDataSourceNameByDataSourceUnitPath() {
- Optional<String> actual =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath("/metadata/logic_db/data_sources/units/foo_ds");
+ void assertFindStorageUnitNameByStorageUnitPath() {
+ Optional<String> actual =
DataSourceMetaDataNodePath.findStorageUnitNameByStorageUnitPath("/metadata/foo_db/data_sources/units/foo_ds");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_ds"));
}
@Test
- void assertFindDataSourceNameByDataSourceUnitPathIfNotFound() {
-
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath("/xxx/logic_db/data_sources/units/foo_ds").isPresent());
+ void assertFindStorageUnitNameByStorageUnitPathIfNotFound() {
+
assertFalse(DataSourceMetaDataNodePath.findStorageUnitNameByStorageUnitPath("/xxx/foo_db/data_sources/units/foo_ds").isPresent());
}
@Test
- void assertFindDataSourceNameByDataSourceNodeActiveVersionPath() {
- Optional<String> actual =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath("/metadata/logic_db/data_sources/nodes/foo_ds/active_version");
+ void assertFindStorageNodeNameByActiveVersionPath() {
+ Optional<String> actual =
DataSourceMetaDataNodePath.findStorageNodeNameByActiveVersionPath("/metadata/foo_db/data_sources/nodes/foo_ds/active_version");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_ds"));
}
@Test
- void assertFindDataSourceNameByDataSourceNodeActiveVersionPathIfNotFound()
{
-
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath("/xxx/logic_db/data_sources/nodes/foo_ds/active_version").isPresent());
+ void assertFindStorageNodeNameByActiveVersionPathIfNotFound() {
+
assertFalse(DataSourceMetaDataNodePath.findStorageNodeNameByActiveVersionPath("/xxx/foo_db/data_sources/nodes/foo_ds/active_version").isPresent());
}
@Test
- void assertFindDataSourceNameByDataSourceNodePath() {
- Optional<String> actual =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath("/metadata/logic_db/data_sources/nodes/foo_ds");
+ void assertFindStorageNodeNameByStorageNodePath() {
+ Optional<String> actual =
DataSourceMetaDataNodePath.findStorageNodeNameByStorageNodePath("/metadata/foo_db/data_sources/nodes/foo_ds");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_ds"));
}
@Test
- void assertFindDataSourceNameByDataSourceNodePathIfNotFound() {
-
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath("/xxx/logic_db/data_sources/nodes/foo_ds").isPresent());
+ void assertFindStorageNodeNameByStorageNodePathIfNotFound() {
+
assertFalse(DataSourceMetaDataNodePath.findStorageNodeNameByStorageNodePath("/xxx/foo_db/data_sources/nodes/foo_ds").isPresent());
}
@Test
- void assertIsDataSourceUnitActiveVersionPath() {
-
assertTrue(DataSourceMetaDataNodePath.isDataSourceUnitActiveVersionPath("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
- }
-
- @Test
- void assertIsDataSourceUnitPath() {
-
assertTrue(DataSourceMetaDataNodePath.isDataSourceUnitPath("/metadata/logic_db/data_sources/units/foo_ds"));
- }
-
- @Test
- void assertIsDataSourceNodeActiveVersionPath() {
-
assertTrue(DataSourceMetaDataNodePath.isDataSourceNodeActiveVersionPath("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
- }
-
- @Test
- void assertIsDataSourceNodePath() {
-
assertTrue(DataSourceMetaDataNodePath.isDataSourceNodePath("/metadata/logic_db/data_sources/nodes/foo_ds"));
+ void assertIsDataSourceRootPath() {
+
assertTrue(DataSourceMetaDataNodePath.isDataSourceRootPath("/metadata/foo_db/data_sources/foo_ds"));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
index 7126140b057..165a9686c18 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
@@ -73,7 +73,7 @@ public final class MetaDataChangedHandler {
handleViewChanged(databaseName, schemaName.get(), event);
return true;
}
- if (DataSourceMetaDataNodePath.isDataSourcesPath(eventKey)) {
+ if (DataSourceMetaDataNodePath.isDataSourceRootPath(eventKey)) {
handleDataSourceChanged(databaseName, event);
return true;
}
@@ -113,42 +113,52 @@ public final class MetaDataChangedHandler {
}
private void handleDataSourceChanged(final String databaseName, final
DataChangedEvent event) {
- if
(DataSourceMetaDataNodePath.isDataSourceUnitActiveVersionPath(event.getKey())
|| DataSourceMetaDataNodePath.isDataSourceUnitPath(event.getKey())) {
- handleStorageUnitChanged(databaseName, event);
- } else if
(DataSourceMetaDataNodePath.isDataSourceNodeActiveVersionPath(event.getKey())
|| DataSourceMetaDataNodePath.isDataSourceNodePath(event.getKey())) {
- handleStorageNodeChanged(databaseName, event);
+ Optional<String> storageUnitName =
DataSourceMetaDataNodePath.findStorageUnitNameByActiveVersionPath(event.getKey());
+ boolean isActiveVersion = true;
+ if (!storageUnitName.isPresent()) {
+ storageUnitName =
DataSourceMetaDataNodePath.findStorageUnitNameByStorageUnitPath(event.getKey());
+ isActiveVersion = false;
+ }
+ if (storageUnitName.isPresent()) {
+ handleStorageUnitChanged(databaseName, event,
storageUnitName.get(), isActiveVersion);
+ return;
+ }
+ Optional<String> storageNodeName =
DataSourceMetaDataNodePath.findStorageNodeNameByActiveVersionPath(event.getKey());
+ isActiveVersion = true;
+ if (!storageNodeName.isPresent()) {
+ storageNodeName =
DataSourceMetaDataNodePath.findStorageNodeNameByStorageNodePath(event.getKey());
+ isActiveVersion = false;
+ }
+ if (storageNodeName.isPresent()) {
+ handleStorageNodeChanged(databaseName, event,
storageNodeName.get(), isActiveVersion);
}
}
- private void handleStorageUnitChanged(final String databaseName, final
DataChangedEvent event) {
- Optional<String> dataSourceUnitName =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath(event.getKey());
- if (dataSourceUnitName.isPresent()) {
+ private void handleStorageUnitChanged(final String databaseName, final
DataChangedEvent event, final String storageUnitName, final boolean
isActiveVersion) {
+ if (isActiveVersion) {
if (Type.ADDED == event.getType()) {
- storageUnitChangedHandler.handleRegistered(databaseName,
dataSourceUnitName.get(), event);
+ storageUnitChangedHandler.handleRegistered(databaseName,
storageUnitName, event);
} else if (Type.UPDATED == event.getType()) {
- storageUnitChangedHandler.handleAltered(databaseName,
dataSourceUnitName.get(), event);
+ storageUnitChangedHandler.handleAltered(databaseName,
storageUnitName, event);
}
return;
}
- dataSourceUnitName =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath(event.getKey());
- if (Type.DELETED == event.getType() && dataSourceUnitName.isPresent())
{
- storageUnitChangedHandler.handleUnregistered(databaseName,
dataSourceUnitName.get());
+ if (Type.DELETED == event.getType()) {
+ storageUnitChangedHandler.handleUnregistered(databaseName,
storageUnitName);
}
}
- private void handleStorageNodeChanged(final String databaseName, final
DataChangedEvent event) {
- Optional<String> dataSourceNodeName =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath(event.getKey());
- if (dataSourceNodeName.isPresent()) {
+ private void handleStorageNodeChanged(final String databaseName, final
DataChangedEvent event, final String storageNodeName, final boolean
isActiveVersion) {
+ if (isActiveVersion) {
if (Type.ADDED == event.getType()) {
- storageNodeChangedHandler.handleRegistered(databaseName,
dataSourceNodeName.get(), event);
+ storageNodeChangedHandler.handleRegistered(databaseName,
storageNodeName, event);
} else if (Type.UPDATED == event.getType()) {
- storageNodeChangedHandler.handleAltered(databaseName,
dataSourceNodeName.get(), event);
+ storageNodeChangedHandler.handleAltered(databaseName,
storageNodeName, event);
}
return;
}
- dataSourceNodeName =
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath(event.getKey());
- if (Type.DELETED == event.getType() && dataSourceNodeName.isPresent())
{
- storageNodeChangedHandler.handleUnregistered(databaseName,
dataSourceNodeName.get());
+ if (Type.DELETED == event.getType()) {
+ storageNodeChangedHandler.handleUnregistered(databaseName,
storageNodeName);
}
}
}