You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by tu...@apache.org on 2022/11/08 02:37:06 UTC
[shardingsphere] branch master updated: Remove duplicated ResourceMetaDataCoordinator (#21997)
This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 57538723fb3 Remove duplicated ResourceMetaDataCoordinator (#21997)
57538723fb3 is described below
commit 57538723fb3c9850ea495f565c21d69b4b0387fa
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Nov 8 10:36:59 2022 +0800
Remove duplicated ResourceMetaDataCoordinator (#21997)
---
.../coordinator/ResourceMetaDataCoordinator.java | 103 -------------
.../ResourceMetaDataCoordinatorTest.java | 163 ---------------------
2 files changed, 266 deletions(-)
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinator.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinator.java
deleted file mode 100644
index 1c048a0bfe8..00000000000
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinator.java
+++ /dev/null
@@ -1,103 +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.coordinator;
-
-import com.google.common.eventbus.Subscribe;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.schema.TableMetaDataChangedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.schema.ViewMetaDataChangedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseAddedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseDeletedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.SchemaAddedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.SchemaDeletedEvent;
-
-/**
- * Resource meta data coordinator.
- */
-@SuppressWarnings("UnstableApiUsage")
-public final class ResourceMetaDataCoordinator {
-
- private final ContextManager contextManager;
-
- public ResourceMetaDataCoordinator(final ContextManager contextManager) {
- this.contextManager = contextManager;
- contextManager.getInstanceContext().getEventBusContext().register(this);
- }
-
- /**
- * Renew to persist meta data.
- *
- * @param event database added event
- */
- @Subscribe
- public synchronized void renew(final DatabaseAddedEvent event) {
- contextManager.addDatabase(event.getDatabaseName());
- }
-
- /**
- * Renew to delete database.
- *
- * @param event database delete event
- */
- @Subscribe
- public synchronized void renew(final DatabaseDeletedEvent event) {
- contextManager.dropDatabase(event.getDatabaseName());
- }
-
- /**
- * Renew to added schema.
- *
- * @param event schema added event
- */
- @Subscribe
- public synchronized void renew(final SchemaAddedEvent event) {
- contextManager.addSchema(event.getDatabaseName(), event.getSchemaName());
- }
-
- /**
- * Renew to delete schema.
- *
- * @param event schema delete event
- */
- @Subscribe
- public synchronized void renew(final SchemaDeletedEvent event) {
- contextManager.dropSchema(event.getDatabaseName(), event.getSchemaName());
- }
-
- /**
- * Renew meta data of the table.
- *
- * @param event table meta data changed event
- */
- @Subscribe
- public synchronized void renew(final TableMetaDataChangedEvent event) {
- contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), event.getChangedTableMetaData(), null);
- contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), event.getDeletedTable(), null);
- }
-
- /**
- * Renew meta data of the view.
- *
- * @param event view meta data changed event
- */
- @Subscribe
- public synchronized void renew(final ViewMetaDataChangedEvent event) {
- contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), null, event.getChangedViewMetaData());
- contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), null, event.getDeletedView());
- }
-}
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinatorTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinatorTest.java
deleted file mode 100644
index 45b38964522..00000000000
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ResourceMetaDataCoordinatorTest.java
+++ /dev/null
@@ -1,163 +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.coordinator;
-
-import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
-import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
-import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
-import org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereView;
-import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
-import org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.schema.TableMetaDataChangedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.schema.ViewMetaDataChangedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseAddedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.DatabaseDeletedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.SchemaAddedEvent;
-import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.event.SchemaDeletedEvent;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
-import org.apache.shardingsphere.test.mock.MockedDataSource;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.sql.SQLException;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public final class ResourceMetaDataCoordinatorTest {
-
- private ResourceMetaDataCoordinator coordinator;
-
- private ContextManager contextManager;
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private MetaDataPersistService persistService;
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private ShardingSphereDatabase database;
-
- @Before
- public void setUp() throws SQLException {
- contextManager = new ClusterContextManagerBuilder().build(createContextManagerBuilderParameter());
- contextManager.renewMetaDataContexts(new MetaDataContexts(contextManager.getMetaDataContexts().getPersistService(), new ShardingSphereMetaData(createDatabases(),
- contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(), new ConfigurationProperties(new Properties()))));
- coordinator = new ResourceMetaDataCoordinator(contextManager);
- }
-
- private ContextManagerBuilderParameter createContextManagerBuilderParameter() {
- ModeConfiguration modeConfig = new ModeConfiguration("Cluster", new ClusterPersistRepositoryConfiguration("FIXTURE", "", "", new Properties()));
- InstanceMetaData instanceMetaData = new ProxyInstanceMetaData("foo_instance_id", 3307);
- return new ContextManagerBuilderParameter(modeConfig, Collections.emptyMap(), Collections.emptyList(), new Properties(), Collections.emptyList(), instanceMetaData, false);
- }
-
- private Map<String, ShardingSphereDatabase> createDatabases() {
- when(database.getName()).thenReturn("db");
- when(database.getResourceMetaData().getDataSources()).thenReturn(new LinkedHashMap<>());
- when(database.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
- when(database.getSchemas()).thenReturn(Collections.singletonMap("foo_schema", new ShardingSphereSchema()));
- when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
- when(database.getSchema("foo_schema")).thenReturn(mock(ShardingSphereSchema.class));
- when(database.getRuleMetaData().getRules()).thenReturn(new LinkedList<>());
- when(database.getRuleMetaData().getConfigurations()).thenReturn(Collections.emptyList());
- when(database.getRuleMetaData().findRules(ResourceHeldRule.class)).thenReturn(Collections.emptyList());
- Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
- result.put("db", database);
- return result;
- }
-
- @Test
- public void assertRenewForDatabaseAdded() {
- when(persistService.getDataSourceService().load("db_added")).thenReturn(createDataSourcePropertiesMap());
- when(persistService.getDatabaseRulePersistService().load("db_added")).thenReturn(Collections.emptyList());
- coordinator.renew(new DatabaseAddedEvent("db_added"));
- assertNotNull(contextManager.getMetaDataContexts().getMetaData().getDatabase("db_added").getResourceMetaData().getDataSources());
- }
-
- private Map<String, DataSourceProperties> createDataSourcePropertiesMap() {
- MockedDataSource dataSource = new MockedDataSource();
- Map<String, DataSourceProperties> result = new LinkedHashMap<>(3, 1);
- result.put("primary_ds", DataSourcePropertiesCreator.create(dataSource));
- result.put("replica_ds_0", DataSourcePropertiesCreator.create(dataSource));
- result.put("replica_ds_1", DataSourcePropertiesCreator.create(dataSource));
- return result;
- }
-
- @Test
- public void assertRenewForDatabaseDeleted() {
- coordinator.renew(new DatabaseDeletedEvent("db"));
- assertNull(contextManager.getMetaDataContexts().getMetaData().getDatabase("db"));
- }
-
- @Test
- public void assertRenewForSchemaAdded() {
- coordinator.renew(new SchemaAddedEvent("db", "foo_schema"));
- verify(contextManager.getMetaDataContexts().getMetaData().getDatabase("db")).putSchema(argThat(argument -> argument.equals("foo_schema")), any(ShardingSphereSchema.class));
- }
-
- @Test
- public void assertRenewForSchemaDeleted() {
- when(contextManager.getMetaDataContexts().getMetaData().getDatabase("db").containsSchema("foo_schema")).thenReturn(true);
- coordinator.renew(new SchemaDeletedEvent("db", "foo_schema"));
- verify(contextManager.getMetaDataContexts().getMetaData().getDatabase("db")).removeSchema("foo_schema");
- }
-
- @Test
- public void assertRenewForTableMetaDataChangedChanged() {
- when(contextManager.getMetaDataContexts().getMetaData().getDatabase("db").containsSchema("db")).thenReturn(true);
- ShardingSphereTable changedTableMetaData = new ShardingSphereTable("t_order", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
- TableMetaDataChangedEvent event = new TableMetaDataChangedEvent("db", "db", changedTableMetaData, null);
- coordinator.renew(event);
- verify(contextManager.getMetaDataContexts().getMetaData().getDatabase("db").getSchema("db")).putTable("t_order", event.getChangedTableMetaData());
- }
-
- @Test
- public void assertRenewForViewMetaDataChanged() {
- when(contextManager.getMetaDataContexts().getMetaData().getDatabase("db").containsSchema("db")).thenReturn(true);
- ShardingSphereView changedViewMetaData = new ShardingSphereView("t_order_view", "");
- ViewMetaDataChangedEvent event = new ViewMetaDataChangedEvent("db", "db", changedViewMetaData, null);
- coordinator.renew(event);
- verify(contextManager.getMetaDataContexts().getMetaData().getDatabase("db").getSchema("db")).putView("t_order_view", event.getChangedViewMetaData());
- }
-}