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 886b409897d Use ModePersistServiceFacade to instead of PersistServiceBuilder (#34991) 886b409897d is described below commit 886b409897d4638823af1d75b2a52af985261a15 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Fri Mar 14 14:00:45 2025 +0800 Use ModePersistServiceFacade to instead of PersistServiceBuilder (#34991) * Add ModePersistServiceFacade * Add ModePersistServiceFacade * Add ModePersistServiceFacade * Add ModePersistServiceFacade * Add ModePersistServiceFacade * Add ModePersistServiceFacade * Use ModePersistServiceFacade to instead of PersistServiceBuilder * Use ModePersistServiceFacade to instead of PersistServiceBuilder --- .../CreateBroadcastTableRuleExecutorTest.java | 6 +-- .../update/DropBroadcastTableRuleExecutorTest.java | 2 +- .../update/AlterEncryptRuleExecutorTest.java | 4 +- .../update/CreateEncryptRuleExecutorTest.java | 2 +- .../update/DropEncryptRuleExecutorTest.java | 6 +-- .../handler/update/AlterMaskRuleExecutorTest.java | 2 +- .../handler/update/CreateMaskRuleExecutorTest.java | 4 +- .../handler/update/DropMaskRuleExecutorTest.java | 4 +- .../database/type/AlterDatabaseRuleOperator.java | 2 +- .../database/type/CreateDatabaseRuleOperator.java | 2 +- .../database/type/DropDatabaseRuleOperator.java | 2 +- .../global/GlobalRuleDefinitionExecuteEngine.java | 3 +- .../rdl/resource/AlterStorageUnitExecutor.java | 2 +- .../rdl/resource/RegisterStorageUnitExecutor.java | 2 +- .../resource/UnregisterStorageUnitExecutor.java | 2 +- .../UnregisterStorageUnitExecutorTest.java | 2 +- .../reflect-config.json | 4 +- .../executor/engine/DriverExecuteExecutor.java | 2 +- .../jdbc/DriverJDBCPushDownExecuteExecutor.java | 2 +- .../DriverJDBCPushDownExecuteUpdateExecutor.java | 2 +- .../update/LoadSingleTableExecutorTest.java | 4 +- ...tDefaultSingleTableStorageUnitExecutorTest.java | 4 +- .../mode/manager/ContextManager.java | 2 +- .../mode/persist/PersistServiceFacade.java | 34 ++++--------- .../persist/mode/ModePersistServiceFacade.java} | 45 +++++++++-------- .../ModePersistServiceFacadeBuilder.java} | 20 +++----- ...Builder.java => ComputeNodePersistService.java} | 26 ++++------ ...=> ModePersistServiceFacadeBuilderFixture.java} | 25 ++++------ .../mode/manager/ContextManagerTest.java | 5 +- ...e.persist.mode.ModePersistServiceFacadeBuilder} | 2 +- mode/core/src/test/resources/logback-test.xml | 2 +- .../cluster/ClusterContextManagerBuilder.java | 6 ++- .../compute/type/ComputeNodeOnlineHandler.java | 4 +- .../builder/ClusterPersistServiceBuilder.java | 47 ------------------ .../facade/ClusterPersistServiceFacade.java | 56 ++++++++++++++++++++++ .../ClusterPersistServiceFacadeBuilder.java} | 28 ++++------- .../service/ClusterComputeNodePersistService.java} | 43 ++++++++--------- .../cluster/workerid/ClusterWorkerIdGenerator.java | 6 +-- ...e.persist.mode.ModePersistServiceFacadeBuilder} | 2 +- .../compute/type/ComputeNodeOnlineHandlerTest.java | 6 ++- .../builder/ClusterPersistServiceBuilderTest.java | 46 ------------------ .../ClusterComputeNodePersistServiceTest.java} | 8 ++-- .../workerid/ClusterWorkerIdGeneratorTest.java | 4 +- .../SessionConnectionReconnectListener.java | 6 +-- .../SessionConnectionReconnectListenerTest.java | 8 ++-- .../StandalonePersistServiceFacade.java} | 36 +++++++------- .../StandalonePersistServiceFacadeBuilder.java} | 23 ++++----- .../StandaloneComputeNodePersistService.java | 39 +++++++++++++++ ...e.persist.mode.ModePersistServiceFacadeBuilder} | 2 +- .../StandalonePersistServiceBuilderTest.java | 46 ------------------ .../connector/StandardDatabaseConnector.java | 4 +- .../database/CreateDatabaseBackendHandler.java | 2 +- .../database/DropDatabaseBackendHandler.java | 2 +- .../computenode/ShowComputeNodesExecutor.java | 5 +- .../computenode/SetComputeNodeStateExecutor.java | 8 +++- .../updatable/label/LabelComputeNodeExecutor.java | 9 +++- .../label/UnlabelComputeNodeExecutor.java | 9 +++- .../variable/SetDistVariableExecutor.java | 2 +- .../proxy/backend/util/MetaDataImportExecutor.java | 4 +- .../YamlDatabaseConfigurationImportExecutor.java | 6 +-- .../distsql/DistSQLBackendHandlerFactoryTest.java | 2 +- .../computenode/ShowComputeNodesExecutorTest.java | 31 +++++++----- .../admin/executor/KillProcessExecutor.java | 2 +- .../admin/executor/ShowProcessListExecutor.java | 2 +- .../executor/ShowProcessListExecutorTest.java | 2 +- .../update/GlobalRuleDefinitionExecutorTest.java | 2 +- 66 files changed, 332 insertions(+), 402 deletions(-) diff --git a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java index f3636ae0ccc..f34df04c623 100644 --- a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java +++ b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java @@ -71,7 +71,7 @@ class CreateBroadcastTableRuleExecutorTest { when(rule.getTables()).thenReturn(Collections.singleton("foo_tbl")); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } @@ -84,7 +84,7 @@ class CreateBroadcastTableRuleExecutorTest { when(rule.getTables()).thenReturn(Collections.singleton("foo_tbl")); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } @@ -95,7 +95,7 @@ class CreateBroadcastTableRuleExecutorTest { ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS); ContextManager contextManager = mockContextManager(database, null); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } diff --git a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java index 6dc737f322b..80a4df756d2 100644 --- a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java +++ b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java @@ -57,7 +57,7 @@ class DropBroadcastTableRuleExecutorTest { when(rule.getConfiguration().getTables()).thenReturn(Collections.singleton("foo_tbl")); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).removeRuleConfiguration(database, "broadcast"); } diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java index c9d63d14b53..dfcbbd2d9ae 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java @@ -88,7 +88,7 @@ class AlterEncryptRuleExecutorTest { when(rule.getAllTableNames()).thenReturn(Collections.singleton("t_encrypt")); when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration()); ContextManager contextManager = mockContextManager(rule); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); new DistSQLUpdateExecuteEngine(createSQLStatementWithAssistQueryAndLikeColumns(), "foo_db", contextManager).executeUpdate(); metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); @@ -101,7 +101,7 @@ class AlterEncryptRuleExecutorTest { when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration()); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatementWithoutAssistQueryAndLikeColumns(), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java index f846b784cc1..b67d83154da 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java @@ -103,7 +103,7 @@ class CreateEncryptRuleExecutorTest { CreateEncryptRuleStatement sqlStatement = createAESEncryptRuleSQLStatement(true); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertIfNotExistsRuleConfiguration)); } diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java index 8be14c436e4..d09534a9608 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java @@ -68,7 +68,7 @@ class DropEncryptRuleExecutorTest { when(rule.getConfiguration()).thenReturn(ruleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement("T_ENCRYPT"), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } @@ -86,7 +86,7 @@ class DropEncryptRuleExecutorTest { when(rule.getAllTableNames().contains(anyString())).thenReturn(true); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement("T_ENCRYPT"), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); } @@ -104,7 +104,7 @@ class DropEncryptRuleExecutorTest { when(rule.getAllTableNames().contains(anyString())).thenReturn(true); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(statement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); } diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java index c73c7e27f44..9ac2832d589 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java @@ -67,7 +67,7 @@ class AlterMaskRuleExecutorTest { when(rule.getConfiguration()).thenReturn(currentRuleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java index 9da63cc2e40..3a42039de0d 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java @@ -65,7 +65,7 @@ class CreateMaskRuleExecutorTest { when(rule.getConfiguration()).thenReturn(currentRuleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } @@ -77,7 +77,7 @@ class CreateMaskRuleExecutorTest { when(rule.getConfiguration()).thenReturn(currentRuleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java index dde951ef799..fb7bb834ac8 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java @@ -60,7 +60,7 @@ class DropMaskRuleExecutorTest { when(rule.getConfiguration()).thenReturn(ruleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement(false, "T_MASK"), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); } @@ -78,7 +78,7 @@ class DropMaskRuleExecutorTest { when(rule.getConfiguration()).thenReturn(ruleConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement(true, "T_USER"), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithIfExists)); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java index 222f487f866..1faf2ef7f8a 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java @@ -48,7 +48,7 @@ public final class AlterDatabaseRuleOperator implements DatabaseRuleOperator { @SuppressWarnings("unchecked") public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { RuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeAlteredRuleConfig)); RuleConfiguration toBeDroppedRuleConfig = executor.buildToBeDroppedRuleConfiguration(toBeAlteredRuleConfig); metaDataManagerPersistService.removeRuleConfigurationItem(database, toBeDroppedRuleConfig); diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java index 79abcc49f2b..5a35e8df86f 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java @@ -48,7 +48,7 @@ public final class CreateDatabaseRuleOperator implements DatabaseRuleOperator { @SuppressWarnings("unchecked") public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { RuleConfiguration toBeCreatedRuleConfig = executor.buildToBeCreatedRuleConfiguration(sqlStatement); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeCreatedRuleConfig)); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java index 33752187dd5..66be5392005 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java @@ -60,7 +60,7 @@ public final class DropDatabaseRuleOperator implements DatabaseRuleOperator { } // TODO refactor to new metadata refresh way } - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); RuleConfiguration toBeDroppedRuleConfig = executor.buildToBeDroppedRuleConfiguration(sqlStatement); metaDataManagerPersistService.removeRuleConfigurationItem(database, toBeDroppedRuleConfig); RuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java index 0d88bc9c859..393c6e80ea4 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java @@ -48,6 +48,7 @@ public final class GlobalRuleDefinitionExecuteEngine { ShardingSphereRule rule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(executor.getRuleClass()); executor.setRule(rule); executor.checkBeforeUpdate(sqlStatement); - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterGlobalRuleConfiguration(executor.buildToBeAlteredRuleConfiguration(sqlStatement)); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService() + .alterGlobalRuleConfiguration(executor.buildToBeAlteredRuleConfiguration(sqlStatement)); } } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java index 4f23d7f0b78..9e00c0f095c 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java @@ -66,7 +66,7 @@ public final class AlterStorageUnitExecutor implements DistSQLUpdateExecutor<Alt Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits()); validateHandler.validate(propsMap, getExpectedPrivileges(sqlStatement)); try { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database, propsMap); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database, propsMap); } catch (final ShardingSphereExternalException ex) { throw new StorageUnitsOperateException("alter", propsMap.keySet(), ex); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java index a64f663f9c8..b1476330eca 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java @@ -67,7 +67,7 @@ public final class RegisterStorageUnitExecutor implements DistSQLUpdateExecutor< } validateHandler.validate(propsMap, getExpectedPrivileges(sqlStatement)); try { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(database.getName(), propsMap); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(database.getName(), propsMap); } catch (final ShardingSphereExternalException ex) { throw new StorageUnitsOperateException("register", propsMap.keySet(), ex); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java index 57f713484e7..c8175ca5063 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java @@ -56,7 +56,7 @@ public final class UnregisterStorageUnitExecutor implements DistSQLUpdateExecuto } checkInUsed(sqlStatement); try { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); } catch (final ShardingSphereServerException ex) { throw new StorageUnitsOperateException("unregister", sqlStatement.getStorageUnitNames(), ex); } diff --git a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java index 245b07d1447..131cf8b016c 100644 --- a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java +++ b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java @@ -85,7 +85,7 @@ class UnregisterStorageUnitExecutorTest { MetaDataContexts metaDataContexts = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS); ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS); when(result.getMetaDataContexts()).thenReturn(metaDataContexts); - when(result.getPersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(metaDataManagerPersistService); + when(result.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(metaDataManagerPersistService); when(result.getDatabase("foo_db")).thenReturn(database); return result; } diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json index 787710ad3ba..f49373c6be8 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json @@ -2108,7 +2108,7 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.PersistServiceFacade"}, - "name":"org.apache.shardingsphere.mode.manager.cluster.persist.builder.ClusterPersistServiceBuilder", + "name":"org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacadeBuilder", "methods":[{"name":"<init>","parameterTypes":[] }] }, { @@ -2117,7 +2117,7 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.PersistServiceFacade"}, - "name":"org.apache.shardingsphere.mode.manager.standalone.persist.builder.StandalonePersistServiceBuilder", + "name":"org.apache.shardingsphere.mode.manager.standalone.persist.facade.StandalonePersistServiceFacadeBuilder", "methods":[{"name":"<init>","parameterTypes":[] }] }, { diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java index 5b1c4ec7de4..bfaeea26c09 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java @@ -102,7 +102,7 @@ public final class DriverExecuteExecutor { return null != resultSet; } FederationMetaDataRefreshEngine federationMetaDataRefreshEngine = new FederationMetaDataRefreshEngine( - connection.getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService(), database); + connection.getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(), database); if (sqlFederationEngine.enabled() && federationMetaDataRefreshEngine.isNeedRefresh(queryContext.getSqlStatementContext())) { federationMetaDataRefreshEngine.refresh(queryContext.getSqlStatementContext()); return true; diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java index 3c757c02243..9b0efbb3d5c 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java @@ -107,7 +107,7 @@ public final class DriverJDBCPushDownExecuteExecutor { if (isNeedImplicitCommit(executionContext.getSqlStatementContext())) { connection.commit(); } - new PushDownMetaDataRefreshEngine(connection.getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService(), database, metaData.getProps()) + new PushDownMetaDataRefreshEngine(connection.getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(), database, metaData.getProps()) .refresh(executionContext.getSqlStatementContext(), executionContext.getRouteContext().getRouteUnits()); return null != results && !results.isEmpty() && null != results.get(0) && results.get(0); } finally { diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java index a53e9aabe6d..2f82ad7035c 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java @@ -109,7 +109,7 @@ public final class DriverJDBCPushDownExecuteUpdateExecutor { .newInstance(database, executionContext.getSqlStatementContext().getSqlStatement(), updateCallback); List<Integer> updateCounts = jdbcExecutor.execute(executionGroupContext, callback); PushDownMetaDataRefreshEngine pushDownMetaDataRefreshEngine = - new PushDownMetaDataRefreshEngine(connection.getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService(), database, props); + new PushDownMetaDataRefreshEngine(connection.getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(), database, props); if (pushDownMetaDataRefreshEngine.isNeedRefresh(executionContext.getSqlStatementContext())) { if (isNeedImplicitCommit(executionContext.getSqlStatementContext())) { connection.commit(); diff --git a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java index f1b93d172d6..170ef7900d1 100644 --- a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java +++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java @@ -145,7 +145,7 @@ class LoadSingleTableExecutorTest { when(rule.getConfiguration()).thenReturn(currentConfig); ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), any()); } @@ -164,7 +164,7 @@ class LoadSingleTableExecutorTest { when(rule.getConfiguration()).thenReturn(currentConfig); ContextManager contextManager = mockContextManager(null); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), any()); } } diff --git a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java index bfd7d8ee89e..0e2ab746942 100644 --- a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java +++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java @@ -63,7 +63,7 @@ class SetDefaultSingleTableStorageUnitExecutorTest { when(rule.getConfiguration()).thenReturn(new SingleRuleConfiguration(Collections.emptyList(), "foo_ds")); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(new SetDefaultSingleTableStorageUnitStatement(null), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).removeRuleConfigurationItem(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("foo_ds")))); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> !x.getDefaultDataSource().isPresent())); } @@ -79,7 +79,7 @@ class SetDefaultSingleTableStorageUnitExecutorTest { when(rule.getAttributes().findAttribute(DataSourceMapperRuleAttribute.class)).thenReturn(Optional.empty()); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(new SetDefaultSingleTableStorageUnitStatement("bar_ds"), "foo_db", contextManager).executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).removeRuleConfigurationItem(database, null); verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("bar_ds")))); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java index 56be3b0bae9..a49a5df7498 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java @@ -236,6 +236,6 @@ public final class ContextManager implements AutoCloseable { } executorEngine.close(); metaDataContexts.getMetaData().close(); - persistServiceFacade.close(computeNodeInstanceContext.getInstance()); + persistServiceFacade.close(); } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/PersistServiceFacade.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/PersistServiceFacade.java index 6f1074f8933..8bfbfb44cfa 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/PersistServiceFacade.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/PersistServiceFacade.java @@ -19,56 +19,42 @@ package org.apache.shardingsphere.mode.persist; import lombok.Getter; import org.apache.shardingsphere.infra.config.mode.ModeConfiguration; -import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; +import org.apache.shardingsphere.mode.node.QualifiedDataSourceStatePersistService; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import org.apache.shardingsphere.mode.state.StatePersistService; -import org.apache.shardingsphere.mode.node.ComputeNodePersistService; -import org.apache.shardingsphere.mode.node.QualifiedDataSourceStatePersistService; /** * Persist service facade. */ @Getter -public final class PersistServiceFacade { +public final class PersistServiceFacade implements AutoCloseable { private final PersistRepository repository; private final MetaDataPersistFacade metaDataPersistFacade; - private final ComputeNodePersistService computeNodePersistService; - private final StatePersistService statePersistService; - private final MetaDataManagerPersistService metaDataManagerPersistService; - - private final ProcessPersistService processPersistService; - private final QualifiedDataSourceStatePersistService qualifiedDataSourceStatePersistService; + private final ModePersistServiceFacade modePersistServiceFacade; + public PersistServiceFacade(final PersistRepository repository, final ModeConfiguration modeConfig, final MetaDataContextManager metaDataContextManager) { this.repository = repository; metaDataPersistFacade = new MetaDataPersistFacade(repository); - computeNodePersistService = new ComputeNodePersistService(repository); statePersistService = new StatePersistService(repository); qualifiedDataSourceStatePersistService = new QualifiedDataSourceStatePersistService(repository); - PersistServiceBuilder persistServiceBuilder = TypedSPILoader.getService(PersistServiceBuilder.class, modeConfig.getType()); - metaDataManagerPersistService = persistServiceBuilder.buildMetaDataManagerPersistService(repository, metaDataContextManager); - processPersistService = persistServiceBuilder.buildProcessPersistService(repository); + modePersistServiceFacade = TypedSPILoader.getService(ModePersistServiceFacadeBuilder.class, modeConfig.getType()).build(metaDataContextManager, repository); } - /** - * Close persist service facade. - * - * @param computeNodeInstance compute node instance - */ - public void close(final ComputeNodeInstance computeNodeInstance) { - computeNodePersistService.offline(computeNodeInstance); + @Override + public void close() { + modePersistServiceFacade.close(); repository.close(); } } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacade.java similarity index 54% copy from mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java copy to mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacade.java index f8794fd2fa7..197a4c8f897 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacade.java @@ -15,33 +15,38 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.fixture; +package org.apache.shardingsphere.mode.persist.mode; -import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; +import org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService; import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -public final class PersistServiceBuilderFixture implements PersistServiceBuilder { +/** + * Mode persist service facade. + */ +public interface ModePersistServiceFacade extends AutoCloseable { - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return null; - } + /** + * Get meta data manager persist service. + * + * @return meta data manager persist service + */ + MetaDataManagerPersistService getMetaDataManagerPersistService(); - @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return null; - } + /** + * Get compute node persist service. + * + * @return compute node persist service + */ + ComputeNodePersistService getComputeNodePersistService(); - @Override - public Object getType() { - return "foo_type"; - } + /** + * Get process persist service. + * + * @return process persist service + */ + ProcessPersistService getProcessPersistService(); @Override - public boolean isDefault() { - return true; - } + void close(); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacadeBuilder.java similarity index 65% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java copy to mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacadeBuilder.java index c60d8729c7b..f8882c8c012 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/mode/ModePersistServiceFacadeBuilder.java @@ -15,31 +15,23 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.persist.service; +package org.apache.shardingsphere.mode.persist.mode; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; /** - * Persist service builder. + * Mode persist service facade builder. */ -public interface PersistServiceBuilder extends TypedSPI { +public interface ModePersistServiceFacadeBuilder extends TypedSPI { /** - * Build meta data manager persist service. + * Build mode persist service facade. * - * @param repository persist repository * @param metaDataContextManager meta data context manager - * @return meta data manager persist service - */ - MetaDataManagerPersistService buildMetaDataManagerPersistService(PersistRepository repository, MetaDataContextManager metaDataContextManager); - - /** - * Build process persist service. - * * @param repository persist repository - * @return process persist service + * @return built facade */ - ProcessPersistService buildProcessPersistService(PersistRepository repository); + ModePersistServiceFacade build(MetaDataContextManager metaDataContextManager, PersistRepository repository); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/ComputeNodePersistService.java similarity index 50% rename from mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java rename to mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/ComputeNodePersistService.java index c60d8729c7b..a6d4e7fd17e 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/PersistServiceBuilder.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/ComputeNodePersistService.java @@ -17,29 +17,19 @@ package org.apache.shardingsphere.mode.persist.service; -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI; -import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; +import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; + +import java.util.Collection; /** - * Persist service builder. + * Compute node persist service. */ -public interface PersistServiceBuilder extends TypedSPI { - - /** - * Build meta data manager persist service. - * - * @param repository persist repository - * @param metaDataContextManager meta data context manager - * @return meta data manager persist service - */ - MetaDataManagerPersistService buildMetaDataManagerPersistService(PersistRepository repository, MetaDataContextManager metaDataContextManager); +public interface ComputeNodePersistService { /** - * Build process persist service. + * Load all compute node instances. * - * @param repository persist repository - * @return process persist service + * @return loaded instances */ - ProcessPersistService buildProcessPersistService(PersistRepository repository); + Collection<ComputeNodeInstance> loadAllInstances(); } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/ModePersistServiceFacadeBuilderFixture.java similarity index 58% copy from mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java copy to mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/ModePersistServiceFacadeBuilderFixture.java index f8794fd2fa7..570e069f344 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/ModePersistServiceFacadeBuilderFixture.java @@ -18,30 +18,21 @@ package org.apache.shardingsphere.mode.fixture; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -public final class PersistServiceBuilderFixture implements PersistServiceBuilder { - - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return null; - } +import static org.mockito.Mockito.mock; + +public final class ModePersistServiceFacadeBuilderFixture implements ModePersistServiceFacadeBuilder { @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return null; + public ModePersistServiceFacade build(final MetaDataContextManager metaDataContextManager, final PersistRepository repository) { + return mock(); } @Override public Object getType() { - return "foo_type"; - } - - @Override - public boolean isDefault() { - return true; + return "FIXTURE"; } } 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 533658cd875..d7f59c54d40 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 @@ -38,7 +38,6 @@ 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.mode.metadata.MetaDataContexts; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -87,8 +86,8 @@ class ContextManagerTest { when(metaDataContexts.getMetaData().getDatabase("foo_db")).thenReturn(database); when(metaDataContexts.getMetaData().getAllDatabases()).thenReturn(Collections.singleton(database)); when(computeNodeInstanceContext.getInstance()).thenReturn(new ComputeNodeInstance(new ProxyInstanceMetaData("foo_id", 3307), Collections.emptyList())); - when(computeNodeInstanceContext.getModeConfiguration()).thenReturn(mock(ModeConfiguration.class)); - contextManager = new ContextManager(metaDataContexts, computeNodeInstanceContext, mock(PersistRepository.class)); + when(computeNodeInstanceContext.getModeConfiguration()).thenReturn(new ModeConfiguration("FIXTURE", mock())); + contextManager = new ContextManager(metaDataContexts, computeNodeInstanceContext, mock()); } private ShardingSphereDatabase mockDatabase() throws SQLException { diff --git a/mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder b/mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder similarity index 90% rename from mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder rename to mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder index 43ab8da1766..d71728fd7f5 100644 --- a/mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder +++ b/mode/core/src/test/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.mode.fixture.PersistServiceBuilderFixture +org.apache.shardingsphere.mode.fixture.ModePersistServiceFacadeBuilderFixture diff --git a/mode/core/src/test/resources/logback-test.xml b/mode/core/src/test/resources/logback-test.xml index a32da0f9c2d..dcfff477299 100644 --- a/mode/core/src/test/resources/logback-test.xml +++ b/mode/core/src/test/resources/logback-test.xml @@ -26,7 +26,7 @@ <logger name="org.apache.shardingsphere" level="warn" additivity="false"> <appender-ref ref="console" /> </logger> - <logger name="org.apache.shardingsphere.mode.node.ComputeNodePersistService" level="off" /> + <logger name="org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService" level="off" /> <root> <level value="error" /> diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java index fa63d5e2570..1f62f2c1539 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java @@ -35,6 +35,7 @@ import org.apache.shardingsphere.mode.manager.cluster.dispatch.listener.DataChan import org.apache.shardingsphere.mode.manager.cluster.exception.MissingRequiredClusterRepositoryConfigurationException; import org.apache.shardingsphere.mode.manager.cluster.lock.ClusterLockContext; import org.apache.shardingsphere.mode.manager.cluster.lock.GlobalLockPersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; import org.apache.shardingsphere.mode.manager.cluster.workerid.ClusterWorkerIdGenerator; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory; @@ -75,9 +76,10 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder } private void registerOnline(final ComputeNodeInstanceContext computeNodeInstanceContext, final ContextManagerBuilderParameter param, final ContextManager contextManager) { - contextManager.getPersistServiceFacade().getComputeNodePersistService().registerOnline(computeNodeInstanceContext.getInstance()); + ClusterPersistServiceFacade clusterPersistServiceFacade = (ClusterPersistServiceFacade) contextManager.getPersistServiceFacade().getModePersistServiceFacade(); + clusterPersistServiceFacade.getComputeNodePersistService().registerOnline(computeNodeInstanceContext.getInstance()); contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry().getAllClusterInstances() - .addAll(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadAllInstances()); + .addAll(clusterPersistServiceFacade.getComputeNodePersistService().loadAllInstances()); new DataChangedEventListenerRegistry(contextManager, getDatabaseNames(param, contextManager.getPersistServiceFacade().getMetaDataPersistFacade())).register(); } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandler.java index a5ef64ee4bf..13e70156b8f 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandler.java @@ -30,6 +30,7 @@ import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.node.compute.ComputeNodeChangedHandler; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; import org.apache.shardingsphere.mode.node.path.NodePath; import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher; import org.apache.shardingsphere.mode.node.path.type.global.node.compute.status.OnlineNodePath; @@ -64,7 +65,8 @@ public final class ComputeNodeOnlineHandler implements ComputeNodeChangedHandler InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create(instanceId, instanceType, computeNodeData); switch (event.getType()) { case ADDED: - clusterInstanceRegistry.add(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadInstance(instanceMetaData)); + ClusterPersistServiceFacade clusterPersistServiceFacade = (ClusterPersistServiceFacade) contextManager.getPersistServiceFacade().getModePersistServiceFacade(); + clusterInstanceRegistry.add(clusterPersistServiceFacade.getComputeNodePersistService().loadInstance(instanceMetaData)); break; case DELETED: clusterInstanceRegistry.delete(new ComputeNodeInstance(instanceMetaData)); diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilder.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilder.java deleted file mode 100644 index b20438a3269..00000000000 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilder.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.mode.manager.cluster.persist.builder; - -import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterMetaDataManagerPersistService; -import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterProcessPersistService; -import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; - -/** - * Cluster persist service builder. - */ -public final class ClusterPersistServiceBuilder implements PersistServiceBuilder { - - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return new ClusterMetaDataManagerPersistService(metaDataContextManager, repository); - } - - @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return new ClusterProcessPersistService(repository); - } - - @Override - public Object getType() { - return "Cluster"; - } -} diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacade.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacade.java new file mode 100644 index 00000000000..e57d875410b --- /dev/null +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacade.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.mode.manager.cluster.persist.facade; + +import lombok.AccessLevel; +import lombok.Getter; +import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterMetaDataManagerPersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterProcessPersistService; +import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; +import org.apache.shardingsphere.mode.spi.repository.PersistRepository; + +/** + * Cluster persist service facade. + */ +@Getter +public final class ClusterPersistServiceFacade implements ModePersistServiceFacade { + + private final ClusterMetaDataManagerPersistService metaDataManagerPersistService; + + private final ClusterComputeNodePersistService computeNodePersistService; + + private final ClusterProcessPersistService processPersistService; + + @Getter(AccessLevel.NONE) + private final ComputeNodeInstance computeNodeInstance; + + public ClusterPersistServiceFacade(final MetaDataContextManager metaDataContextManager, final PersistRepository repository) { + metaDataManagerPersistService = new ClusterMetaDataManagerPersistService(metaDataContextManager, repository); + computeNodePersistService = new ClusterComputeNodePersistService(repository); + processPersistService = new ClusterProcessPersistService(repository); + computeNodeInstance = metaDataContextManager.getComputeNodeInstanceContext().getInstance(); + } + + @Override + public void close() { + computeNodePersistService.offline(computeNodeInstance); + } +} diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacadeBuilder.java similarity index 56% copy from mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java copy to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacadeBuilder.java index f8794fd2fa7..35c166f61f1 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/facade/ClusterPersistServiceFacadeBuilder.java @@ -15,33 +15,25 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.fixture; +package org.apache.shardingsphere.mode.manager.cluster.persist.facade; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -public final class PersistServiceBuilderFixture implements PersistServiceBuilder { - - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return null; - } +/** + * Cluster persist service facade builder. + */ +public final class ClusterPersistServiceFacadeBuilder implements ModePersistServiceFacadeBuilder { @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return null; + public ModePersistServiceFacade build(final MetaDataContextManager metaDataContextManager, final PersistRepository repository) { + return new ClusterPersistServiceFacade(metaDataContextManager, repository); } @Override public Object getType() { - return "foo_type"; - } - - @Override - public boolean isDefault() { - return true; + return "Cluster"; } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/node/ComputeNodePersistService.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistService.java similarity index 96% rename from mode/core/src/main/java/org/apache/shardingsphere/mode/node/ComputeNodePersistService.java rename to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistService.java index 30c629503d9..ac95c21aaa1 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/node/ComputeNodePersistService.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistService.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.node; +package org.apache.shardingsphere.mode.manager.cluster.persist.service; import com.google.common.base.Strings; import lombok.RequiredArgsConstructor; @@ -34,6 +34,7 @@ import org.apache.shardingsphere.mode.node.path.type.global.node.compute.label.L import org.apache.shardingsphere.mode.node.path.type.global.node.compute.status.OnlineNodePath; import org.apache.shardingsphere.mode.node.path.type.global.node.compute.status.StatusNodePath; import org.apache.shardingsphere.mode.node.path.type.global.node.compute.workerid.ComputeNodeWorkerIDNodePath; +import org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import java.util.Arrays; @@ -45,11 +46,11 @@ import java.util.Optional; import java.util.stream.Collectors; /** - * Compute node persist service. + * Cluster compute node persist service. */ @RequiredArgsConstructor @Slf4j -public final class ComputeNodePersistService { +public final class ClusterComputeNodePersistService implements ComputeNodePersistService { private final PersistRepository repository; @@ -80,26 +81,6 @@ public final class ComputeNodePersistService { repository.delete(NodePathGenerator.toPath(new OnlineNodePath(computeNodeInstance.getMetaData().getType(), computeNodeInstance.getMetaData().getId()))); } - /** - * Load all compute node instances. - * - * @return loaded instances - */ - public Collection<ComputeNodeInstance> loadAllInstances() { - return Arrays.stream(InstanceType.values()).flatMap(each -> loadInstances(each).stream()).collect(Collectors.toList()); - } - - private Collection<ComputeNodeInstance> loadInstances(final InstanceType instanceType) { - Collection<ComputeNodeInstance> result = new LinkedList<>(); - for (String each : repository.getChildrenKeys(NodePathGenerator.toPath(new OnlineNodePath(instanceType, null)))) { - String value = repository.query(NodePathGenerator.toPath(new OnlineNodePath(instanceType, each))); - if (!Strings.isNullOrEmpty(value)) { - result.add(loadInstance(InstanceMetaDataFactory.create(each, instanceType, new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, YamlComputeNodeData.class))))); - } - } - return result; - } - /** * Load compute node instance. * @@ -180,4 +161,20 @@ public final class ComputeNodePersistService { return instanceIds.stream().map(each -> repository.query(NodePathGenerator.toPath(new ComputeNodeWorkerIDNodePath(each)))) .filter(Objects::nonNull).map(Integer::parseInt).collect(Collectors.toSet()); } + + @Override + public Collection<ComputeNodeInstance> loadAllInstances() { + return Arrays.stream(InstanceType.values()).flatMap(each -> loadInstances(each).stream()).collect(Collectors.toList()); + } + + private Collection<ComputeNodeInstance> loadInstances(final InstanceType instanceType) { + Collection<ComputeNodeInstance> result = new LinkedList<>(); + for (String each : repository.getChildrenKeys(NodePathGenerator.toPath(new OnlineNodePath(instanceType, null)))) { + String value = repository.query(NodePathGenerator.toPath(new OnlineNodePath(instanceType, each))); + if (!Strings.isNullOrEmpty(value)) { + result.add(loadInstance(InstanceMetaDataFactory.create(each, instanceType, new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, YamlComputeNodeData.class))))); + } + } + return result; + } } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGenerator.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGenerator.java index 0c1dc137884..41ebc9920ab 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGenerator.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGenerator.java @@ -22,7 +22,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.apache.shardingsphere.infra.instance.workerid.WorkerIdAssignedException; import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator; -import org.apache.shardingsphere.mode.node.ComputeNodePersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; import java.util.Collection; @@ -41,7 +41,7 @@ public final class ClusterWorkerIdGenerator implements WorkerIdGenerator { private final String instanceId; - private final ComputeNodePersistService computeNodePersistService; + private final ClusterComputeNodePersistService computeNodePersistService; private final ReservationPersistService reservationPersistService; @@ -49,7 +49,7 @@ public final class ClusterWorkerIdGenerator implements WorkerIdGenerator { public ClusterWorkerIdGenerator(final ClusterPersistRepository repository, final String instanceId) { this.instanceId = instanceId; - computeNodePersistService = new ComputeNodePersistService(repository); + computeNodePersistService = new ClusterComputeNodePersistService(repository); reservationPersistService = new ReservationPersistService(repository); } diff --git a/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder b/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder similarity index 89% rename from mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder rename to mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder index d2c393c4c33..17d9f371de6 100644 --- a/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder +++ b/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.mode.manager.cluster.persist.builder.ClusterPersistServiceBuilder +org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacadeBuilder diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandlerTest.java index 848b563dc9d..fec5b1fc0b6 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandlerTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/compute/type/ComputeNodeOnlineHandlerTest.java @@ -23,6 +23,7 @@ import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; import org.apache.shardingsphere.mode.node.path.engine.generator.NodePathGenerator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -32,6 +33,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -60,7 +62,9 @@ class ComputeNodeOnlineHandlerTest { @Test void assertHandleWithInstanceOnlineEvent() { ComputeNodeInstance computeNodeInstance = mock(ComputeNodeInstance.class); - when(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadInstance(any())).thenReturn(computeNodeInstance); + ClusterPersistServiceFacade clusterPersistServiceFacade = mock(ClusterPersistServiceFacade.class, RETURNS_DEEP_STUBS); + when(clusterPersistServiceFacade.getComputeNodePersistService().loadInstance(any())).thenReturn(computeNodeInstance); + when(contextManager.getPersistServiceFacade().getModePersistServiceFacade()).thenReturn(clusterPersistServiceFacade); handler.handle(contextManager, new DataChangedEvent("/nodes/compute_nodes/online/proxy/foo_instance_id", "{attribute: 127.0.0.1@3307,version: 1}", Type.ADDED)); verify(contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry()).add(computeNodeInstance); } diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilderTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilderTest.java deleted file mode 100644 index 0fb8dc81449..00000000000 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/builder/ClusterPersistServiceBuilderTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.mode.manager.cluster.persist.builder; - -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterMetaDataManagerPersistService; -import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterProcessPersistService; -import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.mock; - -class ClusterPersistServiceBuilderTest { - - private final PersistServiceBuilder persistServiceBuilder = TypedSPILoader.getService(PersistServiceBuilder.class, "Cluster"); - - @Test - void assertBuildMetaDataManagerPersistService() { - assertThat(persistServiceBuilder.buildMetaDataManagerPersistService(mock(PersistRepository.class), mock(MetaDataContextManager.class)), - instanceOf(ClusterMetaDataManagerPersistService.class)); - } - - @Test - void assertBuildProcessPersistService() { - assertThat(persistServiceBuilder.buildProcessPersistService(mock(PersistRepository.class)), instanceOf(ClusterProcessPersistService.class)); - } -} diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/node/ComputeNodePersistServiceTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistServiceTest.java similarity index 96% rename from mode/core/src/test/java/org/apache/shardingsphere/mode/node/ComputeNodePersistServiceTest.java rename to mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistServiceTest.java index bea3bda4566..a1ebd6f7b90 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/node/ComputeNodePersistServiceTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterComputeNodePersistServiceTest.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.node; +package org.apache.shardingsphere.mode.manager.cluster.persist.service; import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData; @@ -45,16 +45,16 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) -class ComputeNodePersistServiceTest { +class ClusterComputeNodePersistServiceTest { - private ComputeNodePersistService computeNodePersistService; + private ClusterComputeNodePersistService computeNodePersistService; @Mock private PersistRepository repository; @BeforeEach void setUp() { - computeNodePersistService = new ComputeNodePersistService(repository); + computeNodePersistService = new ClusterComputeNodePersistService(repository); } @Test diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGeneratorTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGeneratorTest.java index a2a093e13ca..649c46b7ed7 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGeneratorTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/workerid/ClusterWorkerIdGeneratorTest.java @@ -20,7 +20,7 @@ package org.apache.shardingsphere.mode.manager.cluster.workerid; import lombok.SneakyThrows; import org.apache.shardingsphere.infra.instance.workerid.WorkerIdAssignedException; import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator; -import org.apache.shardingsphere.mode.node.ComputeNodePersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; import org.apache.shardingsphere.test.util.PropertiesBuilder; import org.apache.shardingsphere.test.util.PropertiesBuilder.Property; @@ -48,7 +48,7 @@ class ClusterWorkerIdGeneratorTest { private ClusterWorkerIdGenerator workerIdGenerator; @Mock - private ComputeNodePersistService computeNodePersistService; + private ClusterComputeNodePersistService computeNodePersistService; @Mock private ReservationPersistService reservationPersistService; diff --git a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListener.java b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListener.java index 54397b13462..2428a9633b3 100644 --- a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListener.java +++ b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListener.java @@ -23,8 +23,8 @@ import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.state.ConnectionState; import org.apache.curator.framework.state.ConnectionStateListener; import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; -import org.apache.shardingsphere.mode.node.ComputeNodePersistService; import java.util.Properties; @@ -38,11 +38,11 @@ public final class SessionConnectionReconnectListener implements ConnectionState private final ComputeNodeInstanceContext computeNodeInstanceContext; - private final ComputeNodePersistService computeNodePersistService; + private final ClusterComputeNodePersistService computeNodePersistService; public SessionConnectionReconnectListener(final ComputeNodeInstanceContext computeNodeInstanceContext, final ClusterPersistRepository repository) { this.computeNodeInstanceContext = computeNodeInstanceContext; - this.computeNodePersistService = new ComputeNodePersistService(repository); + computeNodePersistService = new ClusterComputeNodePersistService(repository); } @Override diff --git a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListenerTest.java b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListenerTest.java index ac2b20320e4..4df51b1fc4a 100644 --- a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListenerTest.java +++ b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/listener/SessionConnectionReconnectListenerTest.java @@ -21,7 +21,7 @@ import lombok.SneakyThrows; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.state.ConnectionState; import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext; -import org.apache.shardingsphere.mode.node.ComputeNodePersistService; +import org.apache.shardingsphere.mode.manager.cluster.persist.service.ClusterComputeNodePersistService; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -58,7 +58,7 @@ class SessionConnectionReconnectListenerTest { @Test void assertChangeToLostStateWithGenerateWorkerId() throws InterruptedException { - ComputeNodePersistService computeNodePersistService = mock(ComputeNodePersistService.class); + ClusterComputeNodePersistService computeNodePersistService = mock(ClusterComputeNodePersistService.class); when(client.getZookeeperClient().blockUntilConnectedOrTimedOut()).thenReturn(false, true); getSessionConnectionReconnectListener(computeNodePersistService).stateChanged(client, ConnectionState.LOST); verify(computeNodeInstanceContext).generateWorkerId(new Properties()); @@ -67,7 +67,7 @@ class SessionConnectionReconnectListenerTest { @Test void assertChangeToLostStateWithoutGenerateWorkerId() throws InterruptedException { - ComputeNodePersistService computeNodePersistService = mock(ComputeNodePersistService.class); + ClusterComputeNodePersistService computeNodePersistService = mock(ClusterComputeNodePersistService.class); when(client.getZookeeperClient().blockUntilConnectedOrTimedOut()).thenReturn(true); when(computeNodeInstanceContext.getInstance().getWorkerId()).thenReturn(-1); getSessionConnectionReconnectListener(computeNodePersistService).stateChanged(client, ConnectionState.LOST); @@ -76,7 +76,7 @@ class SessionConnectionReconnectListenerTest { } @SneakyThrows(ReflectiveOperationException.class) - private SessionConnectionReconnectListener getSessionConnectionReconnectListener(final ComputeNodePersistService computeNodePersistService) { + private SessionConnectionReconnectListener getSessionConnectionReconnectListener(final ClusterComputeNodePersistService computeNodePersistService) { SessionConnectionReconnectListener result = new SessionConnectionReconnectListener(computeNodeInstanceContext, repository); Plugins.getMemberAccessor().set(SessionConnectionReconnectListener.class.getDeclaredField("computeNodePersistService"), result, computeNodePersistService); return result; diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacade.java similarity index 53% rename from mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java rename to mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacade.java index 8133669d3e4..4475b7aeafa 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacade.java @@ -15,38 +15,34 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.standalone.persist.builder; +package org.apache.shardingsphere.mode.manager.standalone.persist.facade; +import lombok.Getter; +import org.apache.shardingsphere.mode.manager.standalone.persist.service.StandaloneComputeNodePersistService; import org.apache.shardingsphere.mode.manager.standalone.persist.service.StandaloneMetaDataManagerPersistService; import org.apache.shardingsphere.mode.manager.standalone.persist.service.StandaloneProcessPersistService; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; /** - * Standalone meta data manager persist service builder. + * Standalone persist service facade. */ -public final class StandalonePersistServiceBuilder implements PersistServiceBuilder { +@Getter +public final class StandalonePersistServiceFacade implements ModePersistServiceFacade { - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return new StandaloneMetaDataManagerPersistService(metaDataContextManager); - } + private final StandaloneMetaDataManagerPersistService metaDataManagerPersistService; - @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return new StandaloneProcessPersistService(); - } + private final StandaloneComputeNodePersistService computeNodePersistService; - @Override - public Object getType() { - return "Standalone"; + private final StandaloneProcessPersistService processPersistService; + + public StandalonePersistServiceFacade(final MetaDataContextManager metaDataContextManager) { + metaDataManagerPersistService = new StandaloneMetaDataManagerPersistService(metaDataContextManager); + computeNodePersistService = new StandaloneComputeNodePersistService(metaDataContextManager.getComputeNodeInstanceContext().getInstance()); + processPersistService = new StandaloneProcessPersistService(); } @Override - public boolean isDefault() { - return true; + public void close() { } } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacadeBuilder.java similarity index 60% rename from mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java rename to mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacadeBuilder.java index f8794fd2fa7..08e604e8425 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/facade/StandalonePersistServiceFacadeBuilder.java @@ -15,29 +15,26 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.fixture; +package org.apache.shardingsphere.mode.manager.standalone.persist.facade; import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.persist.service.ProcessPersistService; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacade; +import org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -public final class PersistServiceBuilderFixture implements PersistServiceBuilder { - - @Override - public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return null; - } +/** + * Standalone persist service facade builder. + */ +public final class StandalonePersistServiceFacadeBuilder implements ModePersistServiceFacadeBuilder { @Override - public ProcessPersistService buildProcessPersistService(final PersistRepository repository) { - return null; + public ModePersistServiceFacade build(final MetaDataContextManager metaDataContextManager, final PersistRepository repository) { + return new StandalonePersistServiceFacade(metaDataContextManager); } @Override public Object getType() { - return "foo_type"; + return "Standalone"; } @Override diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneComputeNodePersistService.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneComputeNodePersistService.java new file mode 100644 index 00000000000..f242a0a778d --- /dev/null +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneComputeNodePersistService.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.mode.manager.standalone.persist.service; + +import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; +import org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService; + +import java.util.Collection; +import java.util.Collections; + +/** + * Standalone compute node persist service. + */ +@RequiredArgsConstructor +public final class StandaloneComputeNodePersistService implements ComputeNodePersistService { + + private final ComputeNodeInstance computeNodeInstance; + + @Override + public Collection<ComputeNodeInstance> loadAllInstances() { + return Collections.singleton(computeNodeInstance); + } +} diff --git a/mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder b/mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder similarity index 88% rename from mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder rename to mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder index 47181acf88d..be8778248f6 100644 --- a/mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder +++ b/mode/type/standalone/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.persist.mode.ModePersistServiceFacadeBuilder @@ -15,4 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.mode.manager.standalone.persist.builder.StandalonePersistServiceBuilder +org.apache.shardingsphere.mode.manager.standalone.persist.facade.StandalonePersistServiceFacadeBuilder diff --git a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilderTest.java b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilderTest.java deleted file mode 100644 index 283bb54fd3e..00000000000 --- a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilderTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.mode.manager.standalone.persist.builder; - -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.mode.manager.standalone.persist.service.StandaloneMetaDataManagerPersistService; -import org.apache.shardingsphere.mode.manager.standalone.persist.service.StandaloneProcessPersistService; -import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; -import org.apache.shardingsphere.mode.persist.service.PersistServiceBuilder; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.mock; - -class StandalonePersistServiceBuilderTest { - - private final PersistServiceBuilder persistServiceBuilder = TypedSPILoader.getService(PersistServiceBuilder.class, "Standalone"); - - @Test - void assertBuildMetaDataManagerPersistService() { - assertThat(persistServiceBuilder.buildMetaDataManagerPersistService(mock(PersistRepository.class), mock(MetaDataContextManager.class)), - instanceOf(StandaloneMetaDataManagerPersistService.class)); - } - - @Test - void assertBuildProcessPersistService() { - assertThat(persistServiceBuilder.buildProcessPersistService(mock(PersistRepository.class)), instanceOf(StandaloneProcessPersistService.class)); - } -} diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java index f25008d1cf2..e47939b16c5 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java @@ -137,8 +137,8 @@ public final class StandardDatabaseConnector implements DatabaseConnector { } proxySQLExecutor = new ProxySQLExecutor(driverType, databaseConnectionManager, this, queryContext); pushDownMetaDataRefreshEngine = new PushDownMetaDataRefreshEngine( - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(), database, contextManager.getMetaDataContexts().getMetaData().getProps()); - federationMetaDataRefreshEngine = new FederationMetaDataRefreshEngine(contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(), database); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(), database, contextManager.getMetaDataContexts().getMetaData().getProps()); + federationMetaDataRefreshEngine = new FederationMetaDataRefreshEngine(contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(), database); } private void checkBackendReady(final SQLStatementContext sqlStatementContext) { diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java index 5c75e6ead7c..cd276470c20 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java @@ -38,7 +38,7 @@ public final class CreateDatabaseBackendHandler implements ProxyBackendHandler { @Override public ResponseHeader execute() throws SQLException { check(sqlStatement); - ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().createDatabase(sqlStatement.getDatabaseName()); + ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().createDatabase(sqlStatement.getDatabaseName()); return new UpdateResponseHeader(sqlStatement); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java index 463c0b968be..35435d2ead0 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java @@ -56,7 +56,7 @@ public final class DropDatabaseBackendHandler implements ProxyBackendHandler { } if (ProxyContext.getInstance().databaseExists(sqlStatement.getDatabaseName())) { ShardingSphereDatabase database = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(sqlStatement.getDatabaseName()); - ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); + ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); } return new UpdateResponseHeader(sqlStatement); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutor.java index c6ad283cca3..5e1ecbb9299 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutor.java @@ -27,7 +27,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.stream.Collectors; /** @@ -43,9 +42,7 @@ public final class ShowComputeNodesExecutor implements DistSQLQueryExecutor<Show @Override public Collection<LocalDataQueryResultRow> getRows(final ShowComputeNodesStatement sqlStatement, final ContextManager contextManager) { String modeType = contextManager.getComputeNodeInstanceContext().getModeConfiguration().getType(); - Collection<ComputeNodeInstance> instances = "Standalone".equals(modeType) - ? Collections.singleton(contextManager.getComputeNodeInstanceContext().getInstance()) - : contextManager.getPersistServiceFacade().getComputeNodePersistService().loadAllInstances(); + Collection<ComputeNodeInstance> instances = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getComputeNodePersistService().loadAllInstances(); return instances.stream().map(each -> buildRow(each, modeType)).collect(Collectors.toList()); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/computenode/SetComputeNodeStateExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/computenode/SetComputeNodeStateExecutor.java index 48a7ad99f37..f3c088883b5 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/computenode/SetComputeNodeStateExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/computenode/SetComputeNodeStateExecutor.java @@ -24,6 +24,7 @@ import org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition import org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException; import org.apache.shardingsphere.infra.state.instance.InstanceState; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; /** * Set compute node state executor. @@ -38,8 +39,11 @@ public final class SetComputeNodeStateExecutor implements DistSQLUpdateExecutor< } else { checkEnablingIsValid(contextManager, sqlStatement.getInstanceId()); } - contextManager.getPersistServiceFacade().getComputeNodePersistService().updateState(sqlStatement.getInstanceId(), - "DISABLE".equals(sqlStatement.getState()) ? InstanceState.CIRCUIT_BREAK : InstanceState.OK); + if (contextManager.getComputeNodeInstanceContext().getModeConfiguration().isCluster()) { + ClusterPersistServiceFacade clusterPersistServiceFacade = (ClusterPersistServiceFacade) contextManager.getPersistServiceFacade().getModePersistServiceFacade(); + clusterPersistServiceFacade.getComputeNodePersistService().updateState(sqlStatement.getInstanceId(), + "DISABLE".equals(sqlStatement.getState()) ? InstanceState.CIRCUIT_BREAK : InstanceState.OK); + } } private void checkEnablingIsValid(final ContextManager contextManager, final String instanceId) { diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/LabelComputeNodeExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/LabelComputeNodeExecutor.java index 9481acea69a..c2de95b2532 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/LabelComputeNodeExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/LabelComputeNodeExecutor.java @@ -17,11 +17,12 @@ package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.label; -import org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorClusterModeRequired; import org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor; +import org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorClusterModeRequired; import org.apache.shardingsphere.distsql.statement.ral.updatable.LabelComputeNodeStatement; import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; import java.sql.SQLException; import java.util.Collection; @@ -37,6 +38,9 @@ public final class LabelComputeNodeExecutor implements DistSQLUpdateExecutor<Lab @Override public void executeUpdate(final LabelComputeNodeStatement sqlStatement, final ContextManager contextManager) throws SQLException { + if (!contextManager.getComputeNodeInstanceContext().getModeConfiguration().isCluster()) { + return; + } String instanceId = sqlStatement.getInstanceId(); Optional<ComputeNodeInstance> computeNodeInstance = contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry().find(instanceId); if (computeNodeInstance.isPresent()) { @@ -44,7 +48,8 @@ public final class LabelComputeNodeExecutor implements DistSQLUpdateExecutor<Lab if (!sqlStatement.isOverwrite()) { labels.addAll(computeNodeInstance.get().getLabels()); } - contextManager.getPersistServiceFacade().getComputeNodePersistService().persistLabels(instanceId, new LinkedList<>(labels)); + ClusterPersistServiceFacade clusterPersistServiceFacade = (ClusterPersistServiceFacade) contextManager.getPersistServiceFacade().getModePersistServiceFacade(); + clusterPersistServiceFacade.getComputeNodePersistService().persistLabels(instanceId, new LinkedList<>(labels)); } } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/UnlabelComputeNodeExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/UnlabelComputeNodeExecutor.java index bc4897303d9..6e1b4a3aa7f 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/UnlabelComputeNodeExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/label/UnlabelComputeNodeExecutor.java @@ -22,6 +22,7 @@ import org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExec import org.apache.shardingsphere.distsql.statement.ral.updatable.UnlabelComputeNodeStatement; import org.apache.shardingsphere.infra.instance.ComputeNodeInstance; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; import java.util.ArrayList; import java.util.Collection; @@ -37,15 +38,19 @@ public final class UnlabelComputeNodeExecutor implements DistSQLUpdateExecutor<U @Override public void executeUpdate(final UnlabelComputeNodeStatement sqlStatement, final ContextManager contextManager) { + if (!contextManager.getComputeNodeInstanceContext().getModeConfiguration().isCluster()) { + return; + } String instanceId = sqlStatement.getInstanceId(); Optional<ComputeNodeInstance> computeNodeInstance = contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry().find(instanceId); if (computeNodeInstance.isPresent()) { + ClusterPersistServiceFacade clusterPersistServiceFacade = (ClusterPersistServiceFacade) contextManager.getPersistServiceFacade().getModePersistServiceFacade(); Collection<String> labels = new LinkedHashSet<>(computeNodeInstance.get().getLabels()); if (sqlStatement.getLabels().isEmpty()) { - contextManager.getPersistServiceFacade().getComputeNodePersistService().persistLabels(instanceId, Collections.emptyList()); + clusterPersistServiceFacade.getComputeNodePersistService().persistLabels(instanceId, Collections.emptyList()); } else { labels.removeAll(sqlStatement.getLabels()); - contextManager.getPersistServiceFacade().getComputeNodePersistService().persistLabels(instanceId, new ArrayList<>(labels)); + clusterPersistServiceFacade.getComputeNodePersistService().persistLabels(instanceId, new ArrayList<>(labels)); } } } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/variable/SetDistVariableExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/variable/SetDistVariableExecutor.java index b4a274b27d1..3c478f8ee47 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/variable/SetDistVariableExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/variable/SetDistVariableExecutor.java @@ -71,7 +71,7 @@ public final class SetDistVariableExecutor implements DistSQLUpdateExecutor<SetD props.putAll(metaDataContexts.getMetaData().getProps().getProps()); props.putAll(metaDataContexts.getMetaData().getTemporaryProps().getProps()); props.put(propertyKey.getKey(), getValue(propertyKey, value)); - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterProperties(props); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().alterProperties(props); refreshRootLogger(props); syncSQLShowToLoggingRule(propertyKey, metaDataContexts, value, contextManager); syncSQLSimpleToLoggingRule(propertyKey, metaDataContexts, value, contextManager); diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/MetaDataImportExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/MetaDataImportExecutor.java index 6f90d231b43..ba9f68cbc6d 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/MetaDataImportExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/MetaDataImportExecutor.java @@ -71,12 +71,12 @@ public final class MetaDataImportExecutor { private void importGlobalRules(final YamlProxyServerConfiguration yamlServerConfig) { Collection<RuleConfiguration> rules = ruleConfigSwapperEngine.swapToRuleConfigurations(yamlServerConfig.getRules()); for (RuleConfiguration each : rules) { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterGlobalRuleConfiguration(each); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().alterGlobalRuleConfiguration(each); } } private void importProps(final YamlProxyServerConfiguration yamlServerConfig) { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterProperties(yamlServerConfig.getProps()); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().alterProperties(yamlServerConfig.getProps()); } private Collection<YamlProxyDatabaseConfiguration> getYamlProxyDatabaseConfigurations(final ExportedMetaData exportedMetaData) { diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java index dcc5a5042b6..6a7fa8b5910 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java @@ -98,7 +98,7 @@ public final class YamlDatabaseConfigurationImportExecutor { } private void addDatabase(final String databaseName) { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().createDatabase(databaseName); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().createDatabase(databaseName); DatabaseType protocolType = DatabaseTypeEngine.getProtocolType(Collections.emptyMap(), contextManager.getMetaDataContexts().getMetaData().getProps()); contextManager.getMetaDataContexts().getMetaData().addDatabase(databaseName, protocolType, contextManager.getMetaDataContexts().getMetaData().getProps()); } @@ -110,7 +110,7 @@ public final class YamlDatabaseConfigurationImportExecutor { propsMap.put(entry.getKey(), DataSourcePoolPropertiesCreator.create(dataSourceConfig)); } validateHandler.validate(propsMap); - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(databaseName, propsMap); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(databaseName, propsMap); Map<String, StorageUnit> storageUnits = contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnits(); Map<String, StorageNode> toBeAddedStorageNode = StorageUnitNodeMapCreator.create(propsMap); for (Entry<String, DataSourcePoolProperties> entry : propsMap.entrySet()) { @@ -154,6 +154,6 @@ public final class YamlDatabaseConfigurationImportExecutor { } private void dropDatabase(final ShardingSphereDatabase database) { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); + contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); } } diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java index b2af07b30b4..1920f3ba850 100644 --- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java +++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java @@ -101,7 +101,7 @@ class DistSQLBackendHandlerFactoryTest { MetaDataContexts metaDataContexts = mockMetaDataContexts(database); when(result.getDatabase("foo_db")).thenReturn(database); when(result.getMetaDataContexts()).thenReturn(metaDataContexts); - when(result.getPersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(mock(MetaDataManagerPersistService.class)); + when(result.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(mock(MetaDataManagerPersistService.class)); when(result.getComputeNodeInstanceContext().getModeConfiguration().getType()).thenReturn("Cluster"); return result; } diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutorTest.java index 2ee5a716bab..422126044a2 100644 --- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutorTest.java +++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/computenode/ShowComputeNodesExecutorTest.java @@ -26,6 +26,9 @@ import org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMeta import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow; import org.apache.shardingsphere.infra.state.instance.InstanceStateContext; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.manager.cluster.persist.facade.ClusterPersistServiceFacade; +import org.apache.shardingsphere.mode.manager.standalone.persist.facade.StandalonePersistServiceFacade; +import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager; import org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryConfiguration; import org.junit.jupiter.api.Test; @@ -44,9 +47,13 @@ class ShowComputeNodesExecutorTest { @Test void assertExecuteWithStandaloneMode() { ShowComputeNodesExecutor executor = new ShowComputeNodesExecutor(); - ContextManager contextManager = mock(ContextManager.class); + ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS); ComputeNodeInstanceContext computeNodeInstanceContext = createStandaloneInstanceContext(); when(contextManager.getComputeNodeInstanceContext()).thenReturn(computeNodeInstanceContext); + MetaDataContextManager metaDataContextManager = mock(MetaDataContextManager.class, RETURNS_DEEP_STUBS); + when(metaDataContextManager.getComputeNodeInstanceContext()).thenReturn(computeNodeInstanceContext); + StandalonePersistServiceFacade standalonePersistServiceFacade = new StandalonePersistServiceFacade(metaDataContextManager); + when(contextManager.getPersistServiceFacade().getModePersistServiceFacade()).thenReturn(standalonePersistServiceFacade); Collection<LocalDataQueryResultRow> actual = executor.getRows(mock(ShowComputeNodesStatement.class), contextManager); assertThat(actual.size(), is(1)); LocalDataQueryResultRow row = actual.iterator().next(); @@ -62,6 +69,15 @@ class ShowComputeNodesExecutorTest { assertThat(row.getCell(10), is("")); } + private ComputeNodeInstanceContext createStandaloneInstanceContext() { + ComputeNodeInstanceContext result = mock(ComputeNodeInstanceContext.class, RETURNS_DEEP_STUBS); + when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("foo", "127.0.0.1@3308", "foo_version")); + when(result.getInstance().getState()).thenReturn(new InstanceStateContext()); + when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Standalone", new StandalonePersistRepositoryConfiguration("H2", new Properties()))); + when(result.getInstance().getWorkerId()).thenReturn(0); + return result; + } + @Test void assertExecuteWithClusterMode() { ShowComputeNodesExecutor executor = new ShowComputeNodesExecutor(); @@ -83,15 +99,6 @@ class ShowComputeNodesExecutorTest { assertThat(row.getCell(10), is("")); } - private ComputeNodeInstanceContext createStandaloneInstanceContext() { - ComputeNodeInstanceContext result = mock(ComputeNodeInstanceContext.class, RETURNS_DEEP_STUBS); - when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("foo", "127.0.0.1@3308", "foo_version")); - when(result.getInstance().getState()).thenReturn(new InstanceStateContext()); - when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Standalone", new StandalonePersistRepositoryConfiguration("H2", new Properties()))); - when(result.getInstance().getWorkerId()).thenReturn(0); - return result; - } - private ComputeNodeInstanceContext createClusterInstanceContext(final ContextManager contextManager) { ComputeNodeInstanceContext result = mock(ComputeNodeInstanceContext.class, RETURNS_DEEP_STUBS); when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Cluster", mock(PersistRepositoryConfiguration.class))); @@ -100,7 +107,9 @@ class ShowComputeNodesExecutorTest { when(computeNodeInstance.getState()).thenReturn(new InstanceStateContext()); when(computeNodeInstance.getWorkerId()).thenReturn(1); when(result.getClusterInstanceRegistry().getAllClusterInstances()).thenReturn(Collections.singleton(computeNodeInstance)); - when(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadAllInstances()).thenReturn(Collections.singleton(computeNodeInstance)); + ClusterPersistServiceFacade clusterPersistServiceFacade = mock(ClusterPersistServiceFacade.class, RETURNS_DEEP_STUBS); + when(clusterPersistServiceFacade.getComputeNodePersistService().loadAllInstances()).thenReturn(Collections.singleton(computeNodeInstance)); + when(contextManager.getPersistServiceFacade().getModePersistServiceFacade()).thenReturn(clusterPersistServiceFacade); return result; } } diff --git a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/KillProcessExecutor.java b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/KillProcessExecutor.java index 8fe70daa26c..1bad91917c6 100644 --- a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/KillProcessExecutor.java +++ b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/KillProcessExecutor.java @@ -47,6 +47,6 @@ public final class KillProcessExecutor implements DatabaseAdminExecutor { ShardingSpherePreconditions.checkState(QUERY_SCOPE.equalsIgnoreCase(killStatement.getScope()), () -> new UnsupportedSQLOperationException("Only `KILL QUERY <processId>` SQL syntax is supported")); String processId = killStatement.getProcessId(); - ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getProcessPersistService().killProcess(processId); + ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getProcessPersistService().killProcess(processId); } } diff --git a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java index 3254b62ee3f..22b6f38075a 100644 --- a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java +++ b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java @@ -61,7 +61,7 @@ public final class ShowProcessListExecutor implements DatabaseAdminQueryExecutor } private QueryResult getQueryResult() { - Collection<Process> processes = ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getProcessPersistService().getProcessList(); + Collection<Process> processes = ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModePersistServiceFacade().getProcessPersistService().getProcessList(); if (processes.isEmpty()) { return new RawMemoryQueryResult(queryResultMetaData, Collections.emptyList()); } diff --git a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java index 16ad4602956..bbc61ca7c12 100644 --- a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java +++ b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java @@ -49,7 +49,7 @@ class ShowProcessListExecutorTest { void assertExecute() throws SQLException { ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS); when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager); - when(contextManager.getPersistServiceFacade().getProcessPersistService().getProcessList()).thenReturn(mockProcessList()); + when(contextManager.getPersistServiceFacade().getModePersistServiceFacade().getProcessPersistService().getProcessList()).thenReturn(mockProcessList()); ShowProcessListExecutor showProcessListExecutor = new ShowProcessListExecutor(false); showProcessListExecutor.execute(new ConnectionSession(mock(MySQLDatabaseType.class), new DefaultAttributeMap())); assertThat(showProcessListExecutor.getQueryResultMetaData().getColumnCount(), is(8)); diff --git a/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/GlobalRuleDefinitionExecutorTest.java b/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/GlobalRuleDefinitionExecutorTest.java index 2e3bdf48720..e6f48fe3ba4 100644 --- a/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/GlobalRuleDefinitionExecutorTest.java +++ b/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/GlobalRuleDefinitionExecutorTest.java @@ -52,7 +52,7 @@ public abstract class GlobalRuleDefinitionExecutorTest { return; } engine.executeUpdate(); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModePersistServiceFacade().getMetaDataManagerPersistService(); verify(metaDataManagerPersistService).alterGlobalRuleConfiguration(deepEq(matchedRuleConfig)); }