From ae125354e21b65506a2837b3321eec63025e5d60 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 5 Jan 2025 11:50:36 +0800 Subject: [PATCH 1/5] Refactor SwitchingTransactionRuleTestCase --- .../cases/alterresource/SwitchingTransactionRuleTestCase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/SwitchingTransactionRuleTestCase.java b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/SwitchingTransactionRuleTestCase.java index 1e9bf84b66df2..cb4c9881a4bb4 100644 --- a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/SwitchingTransactionRuleTestCase.java +++ b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/SwitchingTransactionRuleTestCase.java @@ -53,7 +53,7 @@ * Switching transaction rule test case. */ @Slf4j -@TransactionTestCase(adapters = TransactionTestConstants.PROXY, dbTypes = TransactionTestConstants.MYSQL) +@TransactionTestCase(adapters = TransactionTestConstants.PROXY, dbTypes = TransactionTestConstants.MYSQL, transactionTypes = TransactionType.LOCAL) public final class SwitchingTransactionRuleTestCase extends BaseTransactionTestCase { private static final int THREAD_SIZE = 1; @@ -108,6 +108,7 @@ public void run() { Awaitility.await().atMost(20L, TimeUnit.SECONDS).pollInterval(19L, TimeUnit.SECONDS).until(() -> true); alterXaTransactionRule("Narayana"); if (SWITCH_COUNT.incrementAndGet() >= MAX_SWITCH_COUNT) { + alterLocalTransactionRule(); IS_FINISHED.set(true); break; } From 1823fce5b95ed3c8e2c33796783ba2cb24684bb9 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 5 Jan 2025 12:39:03 +0800 Subject: [PATCH 2/5] Refactor DatabaseMetaDataNode --- .../persist/node/DatabaseMetaDataNode.java | 42 +++++-------------- .../node/DatabaseMetaDataNodeTest.java | 36 +++++++++------- .../metadata/MetaDataChangedHandler.java | 4 +- .../type/DatabaseMetaDataChangedListener.java | 2 +- 4 files changed, 33 insertions(+), 51 deletions(-) diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java index c35a9ef2aa49e..2c403d5ede546 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java @@ -83,53 +83,31 @@ public static String getMetaDataTablesPath(final String databaseName, final Stri } /** - * Get database name. + * Find database name. * * @param path path - * @return database name + * @param containsChildPath whether contains child path + * @return found database name */ - public static Optional getDatabaseName(final String path) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE); + public static Optional findDatabaseName(final String path, final boolean containsChildPath) { + Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } /** - * Get database name by schema path. - * - * @param schemaPath database path - * @return database name - */ - public static Optional getDatabaseNameBySchemaNode(final String schemaPath) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)?", Pattern.CASE_INSENSITIVE); - Matcher matcher = pattern.matcher(schemaPath); - return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); - } - - /** - * Get schema name. + * Find schema name. * * @param path path - * @return schema name + * @param containsChildPath whether contains child path + * @return found schema name */ - public static Optional getSchemaName(final String path) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/schemas/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE); + public static Optional findSchemaName(final String path, final boolean containsChildPath) { + Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/schemas/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } - /** - * Get schema name by table path. - * - * @param tablePath table path - * @return schema name - */ - public static Optional getSchemaNameByTableNode(final String tablePath) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/schemas/([\\w\\-]+)?", Pattern.CASE_INSENSITIVE); - Matcher matcher = pattern.matcher(tablePath); - return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); - } - /** * Get version node by active version path. * diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java index 6ae6e5134f5b6..579824a96aca7 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java @@ -49,51 +49,55 @@ void assertGetMetaDataTablesPath() { } @Test - void assertGetDatabaseName() { - Optional actual = DatabaseMetaDataNode.getDatabaseName("/metadata/foo_db"); + void assertFindDatabaseNameWithNotContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db", false); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_db")); } @Test - void assertGetDatabaseNameIfNotFound() { - assertFalse(DatabaseMetaDataNode.getDatabaseName("/metadata").isPresent()); + void assertNotFindDatabaseNameWithNotContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db/schemas/foo_schema", false); + assertFalse(actual.isPresent()); } @Test - void assertGetDatabaseNameBySchemaNode() { - Optional actual = DatabaseMetaDataNode.getDatabaseNameBySchemaNode("/metadata/foo_db/schemas/foo_schema"); + void assertFindDatabaseNameWithContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db/schemas/foo_schema", true); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_db")); } @Test - void assertGetDatabaseNameBySchemaNodeIfNotFound() { - assertFalse(DatabaseMetaDataNode.getDatabaseNameBySchemaNode("/xxx/foo_db").isPresent()); + void assertNotFindDatabaseNameWithContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findDatabaseName("/xxx/foo_db/schemas/foo_schema", true); + assertFalse(actual.isPresent()); } @Test - void assertGetSchemaName() { - Optional actual = DatabaseMetaDataNode.getSchemaName("/metadata/foo_db/schemas/foo_schema"); + void assertFindSchemaNameWithNotContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema", false); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_schema")); } @Test - void assertGetSchemaNameIfNotFound() { - assertFalse(DatabaseMetaDataNode.getSchemaName("/metadata/foo_db/xxx/foo_schema").isPresent()); + void assertNotFindSchemaNameWithNotContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", false); + assertFalse(actual.isPresent()); } @Test - void assertGetSchemaNameByTableNode() { - Optional actual = DatabaseMetaDataNode.getSchemaNameByTableNode("/metadata/foo_db/schemas/foo_schema/tables"); + void assertFindSchemaNameWithContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", true); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_schema")); } @Test - void assertGetSchemaNameByTableNodeIfNotFound() { - assertFalse(DatabaseMetaDataNode.getSchemaNameByTableNode("/xxx/foo_db/schemas/foo_schema/tables").isPresent()); + void assertNotFindSchemaNameWithContainsChildPath() { + Optional actual = DatabaseMetaDataNode.findSchemaName("/xxx/foo_db/schemas/foo_schema/tables", true); + assertFalse(actual.isPresent()); } @Test 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 014b6bad9f590..144c3cb7e9fc0 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 @@ -59,12 +59,12 @@ public MetaDataChangedHandler(final ContextManager contextManager) { */ public boolean handle(final String databaseName, final DataChangedEvent event) { String eventKey = event.getKey(); - Optional schemaName = DatabaseMetaDataNode.getSchemaName(eventKey); + Optional schemaName = DatabaseMetaDataNode.findSchemaName(eventKey, false); if (schemaName.isPresent()) { handleSchemaChanged(databaseName, schemaName.get(), event); return true; } - schemaName = DatabaseMetaDataNode.getSchemaNameByTableNode(eventKey); + schemaName = DatabaseMetaDataNode.findSchemaName(eventKey, true); if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) { handleTableChanged(databaseName, schemaName.get(), event); return true; diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java index 3c26fbb4f60ef..fe964bdd1f3f9 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java @@ -40,7 +40,7 @@ public final class DatabaseMetaDataChangedListener implements DataChangedEventLi @Override public void onChange(final DataChangedEvent event) { - Optional databaseName = DatabaseMetaDataNode.getDatabaseNameBySchemaNode(event.getKey()); + Optional databaseName = DatabaseMetaDataNode.findDatabaseName(event.getKey(), true); if (!databaseName.isPresent()) { return; } From 3228af70f801bbf329ad05e052d12c6e38fabf1e Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 5 Jan 2025 12:43:48 +0800 Subject: [PATCH 3/5] Refactor DatabaseMetaDataNode --- .../persist/node/DatabaseMetaDataNode.java | 58 +++++++++---------- .../node/DatabaseMetaDataNodeTest.java | 28 ++++----- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java index 2c403d5ede546..6e5adbf88070d 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java @@ -40,6 +40,15 @@ public final class DatabaseMetaDataNode { private static final String VERSIONS = "versions"; + /** + * Get meta data node. + * + * @return meta data node + */ + public static String getMetaDataNode() { + return String.join("/", "", ROOT_NODE); + } + /** * Get database name path. * @@ -51,24 +60,24 @@ public static String getDatabaseNamePath(final String databaseName) { } /** - * Get schema path. + * Get meta data schemas path. * * @param databaseName database name - * @param schemaName schema name - * @return tables path + * @return schemas path */ - public static String getMetaDataSchemaPath(final String databaseName, final String schemaName) { - return String.join("/", getMetaDataSchemasPath(databaseName), schemaName); + public static String getMetaDataSchemasPath(final String databaseName) { + return String.join("/", getDatabaseNamePath(databaseName), SCHEMAS_NODE); } /** - * Get meta data schemas path. + * Get schema path. * * @param databaseName database name - * @return schemas path + * @param schemaName schema name + * @return tables path */ - public static String getMetaDataSchemasPath(final String databaseName) { - return String.join("/", getDatabaseNamePath(databaseName), SCHEMAS_NODE); + public static String getMetaDataSchemaPath(final String databaseName, final String schemaName) { + return String.join("/", getMetaDataSchemasPath(databaseName), schemaName); } /** @@ -82,6 +91,17 @@ public static String getMetaDataTablesPath(final String databaseName, final Stri return String.join("/", getMetaDataSchemaPath(databaseName, schemaName), TABLES_NODE); } + /** + * Get version node by active version path. + * + * @param rulePath rule path + * @param activeVersion active version + * @return active version node + */ + public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) { + return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + activeVersion; + } + /** * Find database name. * @@ -107,24 +127,4 @@ public static Optional findSchemaName(final String path, final boolean c Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } - - /** - * Get version node by active version path. - * - * @param rulePath rule path - * @param activeVersion active version - * @return active version node - */ - public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) { - return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + activeVersion; - } - - /** - * Get meta data node. - * - * @return meta data node - */ - public static String getMetaDataNode() { - return String.join("/", "", ROOT_NODE); - } } diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java index 579824a96aca7..dd4f4ca24e960 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java @@ -29,13 +29,13 @@ class DatabaseMetaDataNodeTest { @Test - void assertGetDatabaseNamePath() { - assertThat(DatabaseMetaDataNode.getDatabaseNamePath("foo_db"), is("/metadata/foo_db")); + void assertGetMetaDataNode() { + assertThat(DatabaseMetaDataNode.getMetaDataNode(), is("/metadata")); } @Test - void assertGetMetaDataSchemaPath() { - assertThat(DatabaseMetaDataNode.getMetaDataSchemaPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema")); + void assertGetDatabaseNamePath() { + assertThat(DatabaseMetaDataNode.getDatabaseNamePath("foo_db"), is("/metadata/foo_db")); } @Test @@ -43,11 +43,21 @@ void assertGetMetaDataSchemasPath() { assertThat(DatabaseMetaDataNode.getMetaDataSchemasPath("foo_db"), is("/metadata/foo_db/schemas")); } + @Test + void assertGetMetaDataSchemaPath() { + assertThat(DatabaseMetaDataNode.getMetaDataSchemaPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema")); + } + @Test void assertGetMetaDataTablesPath() { assertThat(DatabaseMetaDataNode.getMetaDataTablesPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables")); } + @Test + void assertGetVersionNodeByActiveVersionPath() { + assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); + } + @Test void assertFindDatabaseNameWithNotContainsChildPath() { Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db", false); @@ -99,14 +109,4 @@ void assertNotFindSchemaNameWithContainsChildPath() { Optional actual = DatabaseMetaDataNode.findSchemaName("/xxx/foo_db/schemas/foo_schema/tables", true); assertFalse(actual.isPresent()); } - - @Test - void assertGetVersionNodeByActiveVersionPath() { - assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); - } - - @Test - void assertGetMetaDataNode() { - assertThat(DatabaseMetaDataNode.getMetaDataNode(), is("/metadata")); - } } From ee15eee8ef6dc844aa68085d20732f523647fa83 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 5 Jan 2025 12:52:29 +0800 Subject: [PATCH 4/5] Refactor DatabaseMetaDataNodePath --- ...ode.java => DatabaseMetaDataNodePath.java} | 42 +++++++++---------- .../DatabaseMetaDataPersistService.java | 8 ++-- .../schema/SchemaMetaDataPersistService.java | 8 ++-- .../MetaDataVersionPersistService.java | 4 +- ...java => DatabaseMetaDataNodePathTest.java} | 40 +++++++++--------- .../mode/manager/ContextManagerTest.java | 4 +- .../metadata/MetaDataChangedHandler.java | 6 +-- .../ListenerAssistedChangedHandler.java | 6 +-- .../DataChangedEventListenerRegistry.java | 4 +- .../type/DatabaseMetaDataChangedListener.java | 4 +- 10 files changed, 63 insertions(+), 63 deletions(-) rename kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/{DatabaseMetaDataNode.java => DatabaseMetaDataNodePath.java} (69%) rename kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/{DatabaseMetaDataNodeTest.java => DatabaseMetaDataNodePathTest.java} (58%) diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java similarity index 69% rename from kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java rename to kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java index 6e5adbf88070d..edd7e9c0fd9d0 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNode.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java @@ -25,10 +25,10 @@ import java.util.regex.Pattern; /** - * Database meta data node. + * Database meta data node path. */ @NoArgsConstructor(access = AccessLevel.PRIVATE) -public final class DatabaseMetaDataNode { +public final class DatabaseMetaDataNodePath { private static final String ROOT_NODE = "metadata"; @@ -41,32 +41,32 @@ public final class DatabaseMetaDataNode { private static final String VERSIONS = "versions"; /** - * Get meta data node. + * Get meta data root path. * - * @return meta data node + * @return meta data root path */ - public static String getMetaDataNode() { + public static String getRootPath() { return String.join("/", "", ROOT_NODE); } /** - * Get database name path. + * Get database path. * * @param databaseName database name - * @return database name path + * @return database path */ - public static String getDatabaseNamePath(final String databaseName) { - return String.join("/", getMetaDataNode(), databaseName); + public static String getDatabasePath(final String databaseName) { + return String.join("/", getRootPath(), databaseName); } /** - * Get meta data schemas path. + * Get schemas path. * * @param databaseName database name * @return schemas path */ - public static String getMetaDataSchemasPath(final String databaseName) { - return String.join("/", getDatabaseNamePath(databaseName), SCHEMAS_NODE); + public static String getSchemasPath(final String databaseName) { + return String.join("/", getDatabasePath(databaseName), SCHEMAS_NODE); } /** @@ -74,21 +74,21 @@ public static String getMetaDataSchemasPath(final String databaseName) { * * @param databaseName database name * @param schemaName schema name - * @return tables path + * @return schema path */ - public static String getMetaDataSchemaPath(final String databaseName, final String schemaName) { - return String.join("/", getMetaDataSchemasPath(databaseName), schemaName); + public static String getSchemaPath(final String databaseName, final String schemaName) { + return String.join("/", getSchemasPath(databaseName), schemaName); } /** - * Get meta data tables path. + * Get tables path. * * @param databaseName database name * @param schemaName schema name * @return tables path */ - public static String getMetaDataTablesPath(final String databaseName, final String schemaName) { - return String.join("/", getMetaDataSchemaPath(databaseName, schemaName), TABLES_NODE); + public static String getTablesPath(final String databaseName, final String schemaName) { + return String.join("/", getSchemaPath(databaseName, schemaName), TABLES_NODE); } /** @@ -96,7 +96,7 @@ public static String getMetaDataTablesPath(final String databaseName, final Stri * * @param rulePath rule path * @param activeVersion active version - * @return active version node + * @return active version path */ public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) { return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + activeVersion; @@ -110,7 +110,7 @@ public static String getVersionNodeByActiveVersionPath(final String rulePath, fi * @return found database name */ public static Optional findDatabaseName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } @@ -123,7 +123,7 @@ public static Optional findDatabaseName(final String path, final boolean * @return found schema name */ public static Optional findSchemaName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getMetaDataNode() + "/([\\w\\-]+)/schemas/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)/schemas/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/database/DatabaseMetaDataPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/database/DatabaseMetaDataPersistService.java index 997d0156efe02..6cbc6844babe9 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/database/DatabaseMetaDataPersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/database/DatabaseMetaDataPersistService.java @@ -18,7 +18,7 @@ package org.apache.shardingsphere.metadata.persist.service.metadata.database; import lombok.RequiredArgsConstructor; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.mode.spi.PersistRepository; import java.util.Collection; @@ -37,7 +37,7 @@ public final class DatabaseMetaDataPersistService { * @param databaseName to be added database name */ public void add(final String databaseName) { - repository.persist(DatabaseMetaDataNode.getDatabaseNamePath(databaseName), ""); + repository.persist(DatabaseMetaDataNodePath.getDatabasePath(databaseName), ""); } /** @@ -46,7 +46,7 @@ public void add(final String databaseName) { * @param databaseName to be dropped database name */ public void drop(final String databaseName) { - repository.delete(DatabaseMetaDataNode.getDatabaseNamePath(databaseName)); + repository.delete(DatabaseMetaDataNodePath.getDatabasePath(databaseName)); } /** @@ -55,6 +55,6 @@ public void drop(final String databaseName) { * @return loaded database names */ public Collection loadAllDatabaseNames() { - return repository.getChildrenKeys(DatabaseMetaDataNode.getMetaDataNode()); + return repository.getChildrenKeys(DatabaseMetaDataNodePath.getRootPath()); } } diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java index 3c49e1d49419b..dce6e86961047 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java @@ -19,7 +19,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.metadata.persist.service.metadata.table.TableMetaDataPersistService; import org.apache.shardingsphere.metadata.persist.service.metadata.table.ViewMetaDataPersistService; import org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService; @@ -53,7 +53,7 @@ public SchemaMetaDataPersistService(final PersistRepository repository, final Me * @param schemaName to be added schema name */ public void add(final String databaseName, final String schemaName) { - repository.persist(DatabaseMetaDataNode.getMetaDataTablesPath(databaseName, schemaName), ""); + repository.persist(DatabaseMetaDataNodePath.getTablesPath(databaseName, schemaName), ""); } /** @@ -63,7 +63,7 @@ public void add(final String databaseName, final String schemaName) { * @param schemaName to be dropped schema name */ public void drop(final String databaseName, final String schemaName) { - repository.delete(DatabaseMetaDataNode.getMetaDataSchemaPath(databaseName, schemaName)); + repository.delete(DatabaseMetaDataNodePath.getSchemaPath(databaseName, schemaName)); } /** @@ -113,7 +113,7 @@ public void alterByRuleDropped(final String databaseName, final ShardingSphereSc * @return schemas */ public Collection load(final String databaseName) { - return repository.getChildrenKeys(DatabaseMetaDataNode.getMetaDataSchemasPath(databaseName)).stream() + return repository.getChildrenKeys(DatabaseMetaDataNodePath.getSchemasPath(databaseName)).stream() .map(each -> new ShardingSphereSchema(each, tableMetaDataPersistService.load(databaseName, each), viewMetaDataPersistService.load(databaseName, each))).collect(Collectors.toList()); } } diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java index ea7a36d1800ed..be1e2f83f7205 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.mode.spi.PersistRepository; import java.util.Collection; @@ -55,7 +55,7 @@ public String getActiveVersionByFullPath(final String fullPath) { @Override public String getVersionPathByActiveVersion(final String path, final String activeVersion) { - return repository.query(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath(path, activeVersion)); + return repository.query(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath(path, activeVersion)); } @Override diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java similarity index 58% rename from kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java rename to kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java index dd4f4ca24e960..1e3c29038f535 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodeTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java @@ -26,87 +26,87 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -class DatabaseMetaDataNodeTest { +class DatabaseMetaDataNodePathTest { @Test - void assertGetMetaDataNode() { - assertThat(DatabaseMetaDataNode.getMetaDataNode(), is("/metadata")); + void assertGetRootPath() { + assertThat(DatabaseMetaDataNodePath.getRootPath(), is("/metadata")); } @Test - void assertGetDatabaseNamePath() { - assertThat(DatabaseMetaDataNode.getDatabaseNamePath("foo_db"), is("/metadata/foo_db")); + void assertGetDatabasePath() { + assertThat(DatabaseMetaDataNodePath.getDatabasePath("foo_db"), is("/metadata/foo_db")); } @Test - void assertGetMetaDataSchemasPath() { - assertThat(DatabaseMetaDataNode.getMetaDataSchemasPath("foo_db"), is("/metadata/foo_db/schemas")); + void assertGetSchemasPath() { + assertThat(DatabaseMetaDataNodePath.getSchemasPath("foo_db"), is("/metadata/foo_db/schemas")); } @Test - void assertGetMetaDataSchemaPath() { - assertThat(DatabaseMetaDataNode.getMetaDataSchemaPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema")); + void assertGetSchemaPath() { + assertThat(DatabaseMetaDataNodePath.getSchemaPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema")); } @Test - void assertGetMetaDataTablesPath() { - assertThat(DatabaseMetaDataNode.getMetaDataTablesPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables")); + void assertGetTablesPath() { + assertThat(DatabaseMetaDataNodePath.getTablesPath("foo_db", "foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables")); } @Test void assertGetVersionNodeByActiveVersionPath() { - assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); + assertThat(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); } @Test void assertFindDatabaseNameWithNotContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db", false); + Optional actual = DatabaseMetaDataNodePath.findDatabaseName("/metadata/foo_db", false); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_db")); } @Test void assertNotFindDatabaseNameWithNotContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db/schemas/foo_schema", false); + Optional actual = DatabaseMetaDataNodePath.findDatabaseName("/metadata/foo_db/schemas/foo_schema", false); assertFalse(actual.isPresent()); } @Test void assertFindDatabaseNameWithContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findDatabaseName("/metadata/foo_db/schemas/foo_schema", true); + Optional actual = DatabaseMetaDataNodePath.findDatabaseName("/metadata/foo_db/schemas/foo_schema", true); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_db")); } @Test void assertNotFindDatabaseNameWithContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findDatabaseName("/xxx/foo_db/schemas/foo_schema", true); + Optional actual = DatabaseMetaDataNodePath.findDatabaseName("/xxx/foo_db/schemas/foo_schema", true); assertFalse(actual.isPresent()); } @Test void assertFindSchemaNameWithNotContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema", false); + Optional actual = DatabaseMetaDataNodePath.findSchemaName("/metadata/foo_db/schemas/foo_schema", false); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_schema")); } @Test void assertNotFindSchemaNameWithNotContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", false); + Optional actual = DatabaseMetaDataNodePath.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", false); assertFalse(actual.isPresent()); } @Test void assertFindSchemaNameWithContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", true); + Optional actual = DatabaseMetaDataNodePath.findSchemaName("/metadata/foo_db/schemas/foo_schema/tables", true); assertTrue(actual.isPresent()); assertThat(actual.get(), is("foo_schema")); } @Test void assertNotFindSchemaNameWithContainsChildPath() { - Optional actual = DatabaseMetaDataNode.findSchemaName("/xxx/foo_db/schemas/foo_schema/tables", true); + Optional actual = DatabaseMetaDataNodePath.findSchemaName("/xxx/foo_db/schemas/foo_schema/tables", true); assertFalse(actual.isPresent()); } } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java index d06f2292f89e8..7f7c4a030c98c 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java @@ -37,7 +37,7 @@ import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes; import org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.spi.PersistRepository; import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; @@ -153,7 +153,7 @@ void assertReloadSchema() throws SQLException { when(metaDataContexts.getMetaData().getDatabase("foo_db").getName()).thenReturn("foo_db"); ShardingSphereDatabase database = mockDatabase(); contextManager.reloadSchema(database, "foo_schema", "foo_ds"); - verify(contextManager.getPersistServiceFacade().getRepository()).delete(DatabaseMetaDataNode.getMetaDataSchemaPath("foo_db", "foo_schema")); + verify(contextManager.getPersistServiceFacade().getRepository()).delete(DatabaseMetaDataNodePath.getSchemaPath("foo_db", "foo_schema")); } @Test 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 144c3cb7e9fc0..405cb3216a680 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 @@ -17,7 +17,7 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode; import org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNode; import org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNode; @@ -59,12 +59,12 @@ public MetaDataChangedHandler(final ContextManager contextManager) { */ public boolean handle(final String databaseName, final DataChangedEvent event) { String eventKey = event.getKey(); - Optional schemaName = DatabaseMetaDataNode.findSchemaName(eventKey, false); + Optional schemaName = DatabaseMetaDataNodePath.findSchemaName(eventKey, false); if (schemaName.isPresent()) { handleSchemaChanged(databaseName, schemaName.get(), event); return true; } - schemaName = DatabaseMetaDataNode.findSchemaName(eventKey, true); + schemaName = DatabaseMetaDataNodePath.findSchemaName(eventKey, true); if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) { handleTableChanged(databaseName, schemaName.get(), event); return true; diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java index b8722aad899ee..fcd761fc053b3 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java @@ -18,7 +18,7 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global; import org.apache.shardingsphere.infra.instance.metadata.InstanceType; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.metadata.persist.node.StatesNode; import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; @@ -55,10 +55,10 @@ public void handle(final ContextManager contextManager, final DataChangedEvent e private static void handle(final ContextManager contextManager, final String databaseName, final ListenerAssistedType listenerAssistedType) { ClusterPersistRepository repository = (ClusterPersistRepository) contextManager.getPersistServiceFacade().getRepository(); if (ListenerAssistedType.CREATE_DATABASE == listenerAssistedType) { - repository.watch(DatabaseMetaDataNode.getDatabaseNamePath(databaseName), new DatabaseMetaDataChangedListener(contextManager)); + repository.watch(DatabaseMetaDataNodePath.getDatabasePath(databaseName), new DatabaseMetaDataChangedListener(contextManager)); contextManager.getMetaDataContextManager().getSchemaMetaDataManager().addDatabase(databaseName); } else if (ListenerAssistedType.DROP_DATABASE == listenerAssistedType) { - repository.removeDataListener(DatabaseMetaDataNode.getDatabaseNamePath(databaseName)); + repository.removeDataListener(DatabaseMetaDataNodePath.getDatabasePath(databaseName)); contextManager.getMetaDataContextManager().getSchemaMetaDataManager().dropDatabase(databaseName); } contextManager.getPersistServiceFacade().getListenerAssistedPersistService().deleteDatabaseNameListenerAssisted(databaseName); diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java index 715e4e1c2db47..905d8e977b0b4 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/DataChangedEventListenerRegistry.java @@ -18,7 +18,7 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.listener; import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChangedEventHandler; import org.apache.shardingsphere.mode.manager.cluster.dispatch.listener.type.DatabaseMetaDataChangedListener; @@ -53,7 +53,7 @@ public void register() { } private void registerDatabaseListeners(final String databaseName) { - repository.watch(DatabaseMetaDataNode.getDatabaseNamePath(databaseName), new DatabaseMetaDataChangedListener(contextManager)); + repository.watch(DatabaseMetaDataNodePath.getDatabasePath(databaseName), new DatabaseMetaDataChangedListener(contextManager)); } private void registerGlobalHandlers(final DataChangedEventHandler handler) { diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java index fe964bdd1f3f9..ead588692e7a4 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper.SQLWrapperException; import org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache; -import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNode; +import org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath; import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler; @@ -40,7 +40,7 @@ public final class DatabaseMetaDataChangedListener implements DataChangedEventLi @Override public void onChange(final DataChangedEvent event) { - Optional databaseName = DatabaseMetaDataNode.findDatabaseName(event.getKey(), true); + Optional databaseName = DatabaseMetaDataNodePath.findDatabaseName(event.getKey(), true); if (!databaseName.isPresent()) { return; } From 8d6320040167dc62a4512ab2fd2b06ade6a3ad94 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 5 Jan 2025 13:07:43 +0800 Subject: [PATCH 5/5] Refactor DatabaseMetaDataNodePath --- .../persist/node/DatabaseMetaDataNodePath.java | 14 +++++++++----- .../version/MetaDataVersionPersistService.java | 2 +- .../persist/node/DatabaseMetaDataNodePathTest.java | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java index edd7e9c0fd9d0..76f98613910bb 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java @@ -40,6 +40,8 @@ public final class DatabaseMetaDataNodePath { private static final String VERSIONS = "versions"; + private static final String IDENTIFIER_PATTERN = "([\\w\\-]+)"; + /** * Get meta data root path. * @@ -92,13 +94,13 @@ public static String getTablesPath(final String databaseName, final String schem } /** - * Get version node by active version path. + * Get version path. * * @param rulePath rule path * @param activeVersion active version - * @return active version path + * @return version path */ - public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) { + public static String getVersionPath(final String rulePath, final String activeVersion) { return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + activeVersion; } @@ -110,7 +112,8 @@ public static String getVersionNodeByActiveVersionPath(final String rulePath, fi * @return found database name */ public static Optional findDatabaseName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + String endPattern = containsChildPath ? "?" : "$"; + Pattern pattern = Pattern.compile(getDatabasePath(IDENTIFIER_PATTERN) + endPattern, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } @@ -123,7 +126,8 @@ public static Optional findDatabaseName(final String path, final boolean * @return found schema name */ public static Optional findSchemaName(final String path, final boolean containsChildPath) { - Pattern pattern = Pattern.compile(getRootPath() + "/([\\w\\-]+)/schemas/([\\w\\-]+)" + (containsChildPath ? "?" : "$"), Pattern.CASE_INSENSITIVE); + String endPattern = containsChildPath ? "?" : "$"; + Pattern pattern = Pattern.compile(getSchemaPath(IDENTIFIER_PATTERN, IDENTIFIER_PATTERN) + endPattern, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(path); return matcher.find() ? Optional.of(matcher.group(2)) : Optional.empty(); } diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java index be1e2f83f7205..6db7277591ced 100644 --- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java +++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java @@ -55,7 +55,7 @@ public String getActiveVersionByFullPath(final String fullPath) { @Override public String getVersionPathByActiveVersion(final String path, final String activeVersion) { - return repository.query(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath(path, activeVersion)); + return repository.query(DatabaseMetaDataNodePath.getVersionPath(path, activeVersion)); } @Override diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java index 1e3c29038f535..fedbb260054f7 100644 --- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java +++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java @@ -54,8 +54,8 @@ void assertGetTablesPath() { } @Test - void assertGetVersionNodeByActiveVersionPath() { - assertThat(DatabaseMetaDataNodePath.getVersionNodeByActiveVersionPath("foo_rule", "1"), is("foo_rule/1")); + void assertGetVersionPath() { + assertThat(DatabaseMetaDataNodePath.getVersionPath("foo_rule", "1"), is("foo_rule/1")); } @Test