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 cd195a5e57d Split MetaDataChangedHandler and DataSourceChangedHandler (#34881) cd195a5e57d is described below commit cd195a5e57d6b0f0b808576bd6d60b29f045ec0c Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Wed Mar 5 14:17:29 2025 +0800 Split MetaDataChangedHandler and DataSourceChangedHandler (#34881) * Split MetaDataChangedHandler and DataSourceChangedHandler * Split MetaDataChangedHandler and DataSourceChangedHandler --- .../DataSourceChangedHandler.java} | 81 +++------------------- .../type/StorageNodeChangedHandler.java | 2 +- .../type/StorageUnitChangedHandler.java | 2 +- .../database/metadata/MetaDataChangedHandler.java | 64 ----------------- .../type/DatabaseMetaDataChangedListener.java | 8 ++- .../datasource/DataSourceChangedHandlerTest.java | 79 +++++++++++++++++++++ .../metadata/MetaDataChangedHandlerTest.java | 25 ------- 7 files changed, 94 insertions(+), 167 deletions(-) diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java similarity index 50% copy from mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java copy to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java index 79cb578b891..db198ea0e7b 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java @@ -15,19 +15,14 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata; +package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource; 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.database.metadata.type.SchemaChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageNodeChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageUnitChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.TableChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.ViewChangedHandler; +import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type.StorageNodeChangedHandler; +import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type.StorageUnitChangedHandler; import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher; -import org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath; -import org.apache.shardingsphere.mode.node.path.type.metadata.database.ViewMetadataNodePath; import org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageNodeNodePath; import org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageUnitNodePath; import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathParser; @@ -35,89 +30,29 @@ import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathPars import java.util.Optional; /** - * Meta data changed handler. + * Data source changed handler. */ -public final class MetaDataChangedHandler { - - private final SchemaChangedHandler schemaChangedHandler; - - private final TableChangedHandler tableChangedHandler; - - private final ViewChangedHandler viewChangedHandler; +public final class DataSourceChangedHandler { private final StorageUnitChangedHandler storageUnitChangedHandler; private final StorageNodeChangedHandler storageNodeChangedHandler; - public MetaDataChangedHandler(final ContextManager contextManager) { - schemaChangedHandler = new SchemaChangedHandler(contextManager); - tableChangedHandler = new TableChangedHandler(contextManager); - viewChangedHandler = new ViewChangedHandler(contextManager); + public DataSourceChangedHandler(final ContextManager contextManager) { storageUnitChangedHandler = new StorageUnitChangedHandler(contextManager); storageNodeChangedHandler = new StorageNodeChangedHandler(contextManager); } /** - * Handle meta data changed. + * Handle data source changed. * * @param databaseName database name * @param event data changed event */ public void handle(final String databaseName, final DataChangedEvent event) { - String eventKey = event.getKey(); - Optional<String> schemaName = NodePathSearcher.find(eventKey, TableMetadataNodePath.createSchemaSearchCriteria(false)); - if (schemaName.isPresent()) { - handleSchemaChanged(databaseName, schemaName.get(), event); - return; - } - schemaName = NodePathSearcher.find(eventKey, TableMetadataNodePath.createSchemaSearchCriteria(true)); - if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) { - handleTableChanged(databaseName, schemaName.get(), event); - return; - } - if (schemaName.isPresent() && isViewMetaDataChanged(eventKey)) { - handleViewChanged(databaseName, schemaName.get(), event); + if (!NodePathSearcher.isMatchedPath(event.getKey(), StorageUnitNodePath.createDataSourceSearchCriteria())) { return; } - if (NodePathSearcher.isMatchedPath(eventKey, StorageUnitNodePath.createDataSourceSearchCriteria())) { - handleDataSourceChanged(databaseName, event); - } - } - - private void handleSchemaChanged(final String databaseName, final String schemaName, final DataChangedEvent event) { - if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) { - schemaChangedHandler.handleCreated(databaseName, schemaName); - } else if (Type.DELETED == event.getType()) { - schemaChangedHandler.handleDropped(databaseName, schemaName); - } - } - - private boolean isTableMetaDataChanged(final String key) { - return NodePathSearcher.isMatchedPath(key, TableMetadataNodePath.createTableSearchCriteria()) || new VersionNodePathParser(new TableMetadataNodePath()).isActiveVersionPath(key); - } - - private void handleTableChanged(final String databaseName, final String schemaName, final DataChangedEvent event) { - if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType()) && new VersionNodePathParser(new TableMetadataNodePath()).isActiveVersionPath(event.getKey())) { - tableChangedHandler.handleCreatedOrAltered(databaseName, schemaName, event); - } else if (Type.DELETED == event.getType() && NodePathSearcher.isMatchedPath(event.getKey(), TableMetadataNodePath.createTableSearchCriteria())) { - tableChangedHandler.handleDropped(databaseName, schemaName, event); - } - } - - private boolean isViewMetaDataChanged(final String key) { - return new VersionNodePathParser(new ViewMetadataNodePath()).isActiveVersionPath(key) || NodePathSearcher.isMatchedPath(key, ViewMetadataNodePath.createViewSearchCriteria()); - } - - private void handleViewChanged(final String databaseName, final String schemaName, final DataChangedEvent event) { - if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType()) - && new VersionNodePathParser(new ViewMetadataNodePath()).isActiveVersionPath(event.getKey())) { - viewChangedHandler.handleCreatedOrAltered(databaseName, schemaName, event); - } else if (Type.DELETED == event.getType() && NodePathSearcher.isMatchedPath(event.getKey(), ViewMetadataNodePath.createViewSearchCriteria())) { - viewChangedHandler.handleDropped(databaseName, schemaName, event); - } - } - - private void handleDataSourceChanged(final String databaseName, final DataChangedEvent event) { Optional<String> storageUnitName = new VersionNodePathParser(new StorageUnitNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2); boolean isActiveVersion = true; if (!storageUnitName.isPresent()) { diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java similarity index 98% rename from mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java rename to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java index 076d38de0bf..a49d48f882e 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type; +package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.mode.event.DataChangedEvent; diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java similarity index 99% rename from mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java rename to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java index 656b3591876..7c48981db1d 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type; +package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type; import com.google.common.base.Preconditions; import lombok.RequiredArgsConstructor; diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java index 79cb578b891..820b683091f 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java @@ -21,15 +21,11 @@ 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.database.metadata.type.SchemaChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageNodeChangedHandler; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageUnitChangedHandler; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.TableChangedHandler; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.ViewChangedHandler; import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher; import org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath; import org.apache.shardingsphere.mode.node.path.type.metadata.database.ViewMetadataNodePath; -import org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageNodeNodePath; -import org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageUnitNodePath; import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathParser; import java.util.Optional; @@ -45,16 +41,10 @@ public final class MetaDataChangedHandler { private final ViewChangedHandler viewChangedHandler; - private final StorageUnitChangedHandler storageUnitChangedHandler; - - private final StorageNodeChangedHandler storageNodeChangedHandler; - public MetaDataChangedHandler(final ContextManager contextManager) { schemaChangedHandler = new SchemaChangedHandler(contextManager); tableChangedHandler = new TableChangedHandler(contextManager); viewChangedHandler = new ViewChangedHandler(contextManager); - storageUnitChangedHandler = new StorageUnitChangedHandler(contextManager); - storageNodeChangedHandler = new StorageNodeChangedHandler(contextManager); } /** @@ -77,10 +67,6 @@ public final class MetaDataChangedHandler { } if (schemaName.isPresent() && isViewMetaDataChanged(eventKey)) { handleViewChanged(databaseName, schemaName.get(), event); - return; - } - if (NodePathSearcher.isMatchedPath(eventKey, StorageUnitNodePath.createDataSourceSearchCriteria())) { - handleDataSourceChanged(databaseName, event); } } @@ -116,54 +102,4 @@ public final class MetaDataChangedHandler { viewChangedHandler.handleDropped(databaseName, schemaName, event); } } - - private void handleDataSourceChanged(final String databaseName, final DataChangedEvent event) { - Optional<String> storageUnitName = new VersionNodePathParser(new StorageUnitNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2); - boolean isActiveVersion = true; - if (!storageUnitName.isPresent()) { - storageUnitName = NodePathSearcher.find(event.getKey(), StorageUnitNodePath.createStorageUnitSearchCriteria()); - isActiveVersion = false; - } - if (storageUnitName.isPresent()) { - handleStorageUnitChanged(databaseName, event, storageUnitName.get(), isActiveVersion); - return; - } - Optional<String> storageNodeName = new VersionNodePathParser(new StorageNodeNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2); - isActiveVersion = true; - if (!storageNodeName.isPresent()) { - storageNodeName = NodePathSearcher.find(event.getKey(), StorageNodeNodePath.createStorageNodeSearchCriteria()); - isActiveVersion = false; - } - if (storageNodeName.isPresent()) { - handleStorageNodeChanged(databaseName, event, storageNodeName.get(), isActiveVersion); - } - } - - private void handleStorageUnitChanged(final String databaseName, final DataChangedEvent event, final String storageUnitName, final boolean isActiveVersion) { - if (isActiveVersion) { - if (Type.ADDED == event.getType()) { - storageUnitChangedHandler.handleRegistered(databaseName, storageUnitName, event); - } else if (Type.UPDATED == event.getType()) { - storageUnitChangedHandler.handleAltered(databaseName, storageUnitName, event); - } - return; - } - if (Type.DELETED == event.getType()) { - storageUnitChangedHandler.handleUnregistered(databaseName, storageUnitName); - } - } - - private void handleStorageNodeChanged(final String databaseName, final DataChangedEvent event, final String storageNodeName, final boolean isActiveVersion) { - if (isActiveVersion) { - if (Type.ADDED == event.getType()) { - storageNodeChangedHandler.handleRegistered(databaseName, storageNodeName, event); - } else if (Type.UPDATED == event.getType()) { - storageNodeChangedHandler.handleAltered(databaseName, storageNodeName, event); - } - return; - } - if (Type.DELETED == event.getType()) { - storageNodeChangedHandler.handleUnregistered(databaseName, storageNodeName); - } - } } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java index 71bb03b97e1..0d9760acad9 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java @@ -22,8 +22,9 @@ import org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper. import org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache; import org.apache.shardingsphere.mode.event.DataChangedEvent; import org.apache.shardingsphere.mode.manager.ContextManager; -import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler; +import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.DataSourceChangedHandler; import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule.RuleConfigurationChangedHandler; +import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler; import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher; import org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath; import org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleNodePath; @@ -48,9 +49,10 @@ public final class DatabaseMetaDataChangedListener implements DataChangedEventLi return; } OrderedServicesCache.clearCache(); - if (NodePathSearcher.isMatchedPath(event.getKey(), TableMetadataNodePath.createSchemaSearchCriteria(true)) - || NodePathSearcher.isMatchedPath(event.getKey(), StorageUnitNodePath.createDataSourceSearchCriteria())) { + if (NodePathSearcher.isMatchedPath(event.getKey(), TableMetadataNodePath.createSchemaSearchCriteria(true))) { new MetaDataChangedHandler(contextManager).handle(databaseName.get(), event); + } else if (NodePathSearcher.isMatchedPath(event.getKey(), StorageUnitNodePath.createDataSourceSearchCriteria())) { + new DataSourceChangedHandler(contextManager).handle(databaseName.get(), event); } else if (NodePathSearcher.isMatchedPath(event.getKey(), DatabaseRuleNodePath.createRuleTypeSearchCriteria())) { try { new RuleConfigurationChangedHandler(contextManager).handle(databaseName.get(), event); diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java new file mode 100644 index 00000000000..2b489577685 --- /dev/null +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java @@ -0,0 +1,79 @@ +/* + * 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.dispatch.handler.database.datasource; + +import org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey; +import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +import org.apache.shardingsphere.mode.event.DataChangedEvent; +import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; +import org.apache.shardingsphere.mode.manager.ContextManager; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class DataSourceChangedHandlerTest { + + private DataSourceChangedHandler handler; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private ContextManager contextManager; + + @BeforeEach + void setUp() { + when(contextManager.getMetaDataContexts().getMetaData().getTemporaryProps().getValue(TemporaryConfigurationPropertyKey.PROXY_META_DATA_COLLECTOR_ENABLED)).thenReturn(false); + when(contextManager.getComputeNodeInstanceContext().getModeConfiguration().isCluster()).thenReturn(true); + when(contextManager.getPersistServiceFacade().getRepository().query(any())).thenReturn("0"); + handler = new DataSourceChangedHandler(contextManager); + } + + @Test + void assertHandleStorageUnitRegistered() { + when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value"); + when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db", "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class)); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", "0", Type.ADDED)); + verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).register(eq("foo_db"), any()); + } + + @Test + void assertHandleStorageUnitAltered() { + when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value"); + when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db", "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class)); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", "0", Type.UPDATED)); + verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).alter(eq("foo_db"), any()); + } + + @Test + void assertHandleStorageUnitUnregistered() { + when(contextManager.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true); + handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit", "", Type.DELETED)); + verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).unregister("foo_db", "foo_unit"); + } +} diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java index 53a4a1e9c21..4b016602689 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java @@ -18,7 +18,6 @@ package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata; import org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey; -import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; import org.apache.shardingsphere.infra.instance.metadata.InstanceType; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView; @@ -35,7 +34,6 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -122,27 +120,4 @@ class MetaDataChangedHandlerTest { handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/schemas/foo_schema/views/foo_view", "", Type.DELETED)); verify(contextManager.getMetaDataContextManager().getDatabaseMetaDataManager()).dropView("foo_db", "foo_schema", "foo_view"); } - - @Test - void assertHandleStorageUnitRegistered() { - when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value"); - when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db", "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class)); - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", "0", Type.ADDED)); - verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).register(eq("foo_db"), any()); - } - - @Test - void assertHandleStorageUnitAltered() { - when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value"); - when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db", "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class)); - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", "0", Type.UPDATED)); - verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).alter(eq("foo_db"), any()); - } - - @Test - void assertHandleStorageUnitUnregistered() { - when(contextManager.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true); - handler.handle("foo_db", new DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit", "", Type.DELETED)); - verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).unregister("foo_db", "foo_unit"); - } }