You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2021/06/06 12:26:53 UTC
[shardingsphere] branch master updated: Refactor
MetadataRefreshEngine (#10677)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 eed668f Refactor MetadataRefreshEngine (#10677)
eed668f is described below
commit eed668f6553f2820a82352f3787cca7da0c9f6c4
Author: Juan Pan(Trista) <pa...@apache.org>
AuthorDate: Sun Jun 6 20:26:04 2021 +0800
Refactor MetadataRefreshEngine (#10677)
* Refactor MetadataRefreshEngine
* FIX TESTS
---
.../metadata/{engine => }/MetadataRefresher.java | 2 +-
.../metadata/schema/refresher/SchemaRefresher.java | 2 +-
.../metadata/refresher}/MetadataRefreshEngine.java | 48 ++++++++++++++--------
.../refresher}/MetadataRefresherFactory.java | 44 ++++++++++++++------
.../refresher/MetadataRefresherFactoryTest.java | 18 ++++----
.../core/metadata/FederateSchemaMetadatas.java | 10 +++++
.../core/metadata/refresher/FederateRefresher.java | 2 +-
.../driver/executor/JDBCLockEngine.java | 5 ++-
.../communication/DatabaseCommunicationEngine.java | 3 +-
.../backend/communication/ProxyLockEngine.java | 2 +-
10 files changed, 90 insertions(+), 46 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresher.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/MetadataRefresher.java
similarity index 93%
rename from shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresher.java
rename to shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/MetadataRefresher.java
index f646850..847e5f8 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresher.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/MetadataRefresher.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.engine;
+package org.apache.shardingsphere.infra.metadata;
/**
* Metadata refresher.
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/refresher/SchemaRefresher.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/refresher/SchemaRefresher.java
index a4a9946..afb5121 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/refresher/SchemaRefresher.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/refresher/SchemaRefresher.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.metadata.schema.refresher;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefresher;
+import org.apache.shardingsphere.infra.metadata.MetadataRefresher;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefreshEngine.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefreshEngine.java
similarity index 57%
rename from shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefreshEngine.java
rename to shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefreshEngine.java
index d86201b..d83326e 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefreshEngine.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefreshEngine.java
@@ -15,19 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.engine;
+package org.apache.shardingsphere.infra.context.metadata.refresher;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.lock.LockNameUtil;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
+import org.apache.shardingsphere.infra.metadata.MetadataRefresher;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.mapper.SQLStatementEventMapper;
import org.apache.shardingsphere.infra.metadata.mapper.SQLStatementEventMapperFactory;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
import org.apache.shardingsphere.infra.metadata.schema.refresher.SchemaRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.event.SchemaAlteredEvent;
+import org.apache.shardingsphere.infra.optimize.core.metadata.FederateSchemaMetadata;
+import org.apache.shardingsphere.infra.optimize.core.metadata.refresher.FederateRefresher;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.SQLException;
@@ -40,16 +43,20 @@ import java.util.Optional;
*/
public final class MetadataRefreshEngine {
- private final ShardingSphereMetaData metaData;
+ private final ShardingSphereMetaData schemaMetadata;
+
+ private final FederateSchemaMetadata federateMetadata;
private final SchemaBuilderMaterials materials;
private final ShardingSphereLock shardingSphereLock;
- public MetadataRefreshEngine(final ShardingSphereMetaData metaData, final ConfigurationProperties properties, final ShardingSphereLock shardingSphereLock) {
- this.metaData = metaData;
+ public MetadataRefreshEngine(final ShardingSphereMetaData schemaMetadata,
+ final FederateSchemaMetadata federateMetadata, final ConfigurationProperties properties, final ShardingSphereLock shardingSphereLock) {
+ this.schemaMetadata = schemaMetadata;
+ this.federateMetadata = federateMetadata;
this.shardingSphereLock = shardingSphereLock;
- materials = new SchemaBuilderMaterials(metaData.getResource().getDatabaseType(), metaData.getResource().getDataSources(), metaData.getRuleMetaData().getRules(), properties);
+ materials = new SchemaBuilderMaterials(schemaMetadata.getResource().getDatabaseType(), schemaMetadata.getResource().getDataSources(), schemaMetadata.getRuleMetaData().getRules(), properties);
}
/**
@@ -60,9 +67,9 @@ public final class MetadataRefreshEngine {
* @throws SQLException SQL exception
*/
public void refresh(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames) throws SQLException {
- Optional<MetadataRefresher> metadataRefresher = MetadataRefresherFactory.newInstance(sqlStatement);
- if (metadataRefresher.isPresent()) {
- refreshSchema(sqlStatement, routeDataSourceNames, (SchemaRefresher) metadataRefresher.get());
+ Collection<MetadataRefresher> metadataRefreshers = MetadataRefresherFactory.newInstance(sqlStatement);
+ if (!metadataRefreshers.isEmpty()) {
+ refresh(sqlStatement, routeDataSourceNames, metadataRefreshers);
}
Optional<SQLStatementEventMapper> sqlStatementEventMapper = SQLStatementEventMapperFactory.newInstance(sqlStatement);
if (sqlStatementEventMapper.isPresent()) {
@@ -71,21 +78,20 @@ public final class MetadataRefreshEngine {
}
}
- @SuppressWarnings("rawtypes")
- private void refreshSchema(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final SchemaRefresher refresher) throws SQLException {
+ private void refresh(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final Collection<MetadataRefresher> refreshers) throws SQLException {
if (Objects.nonNull(shardingSphereLock)) {
- refreshSchemaWithLock(sqlStatement, routeDataSourceNames, refresher);
+ refreshWithLock(sqlStatement, routeDataSourceNames, refreshers);
} else {
- refreshSchemaWithoutLock(sqlStatement, routeDataSourceNames, refresher);
+ refreshWithoutLock(sqlStatement, routeDataSourceNames, refreshers);
}
}
- private void refreshSchemaWithLock(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final SchemaRefresher refresher) throws SQLException {
+ private void refreshWithLock(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final Collection<MetadataRefresher> refreshers) throws SQLException {
try {
if (!shardingSphereLock.tryLock(LockNameUtil.getMetadataRefreshLockName())) {
throw new ShardingSphereException("Metadata refresh failed.");
}
- refreshSchemaWithoutLock(sqlStatement, routeDataSourceNames, refresher);
+ refreshWithoutLock(sqlStatement, routeDataSourceNames, refreshers);
if (!shardingSphereLock.isReleased(LockNameUtil.getMetadataRefreshLockName())) {
throw new ShardingSphereException("Metadata refresh failed.");
}
@@ -94,8 +100,16 @@ public final class MetadataRefreshEngine {
}
}
- private void refreshSchemaWithoutLock(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final SchemaRefresher refresher) throws SQLException {
- refresher.refresh(metaData.getSchema(), routeDataSourceNames, sqlStatement, materials);
- ShardingSphereEventBus.getInstance().post(new SchemaAlteredEvent(metaData.getName(), metaData.getSchema()));
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private void refreshWithoutLock(final SQLStatement sqlStatement, final Collection<String> routeDataSourceNames, final Collection<MetadataRefresher> refreshers) throws SQLException {
+ for (MetadataRefresher each : refreshers) {
+ if (each instanceof SchemaRefresher) {
+ ((SchemaRefresher) each).refresh(schemaMetadata.getSchema(), routeDataSourceNames, sqlStatement, materials);
+ }
+ if (each instanceof FederateRefresher) {
+ ((FederateRefresher) each).refresh(federateMetadata, routeDataSourceNames, sqlStatement, materials);
+ }
+ }
+ ShardingSphereEventBus.getInstance().post(new SchemaAlteredEvent(schemaMetadata.getName(), schemaMetadata.getSchema()));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresherFactory.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactory.java
similarity index 58%
rename from shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresherFactory.java
rename to shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactory.java
index f4e5f66..4fc2c0d 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine/MetadataRefresherFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactory.java
@@ -15,10 +15,11 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.engine;
+package org.apache.shardingsphere.infra.context.metadata.refresher;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.metadata.MetadataRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.AlterIndexStatementSchemaRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.AlterTableStatementSchemaRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.CreateIndexStatementSchemaRefresher;
@@ -27,6 +28,7 @@ import org.apache.shardingsphere.infra.metadata.schema.refresher.type.CreateView
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.DropIndexStatementSchemaRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.DropTableStatementSchemaRefresher;
import org.apache.shardingsphere.infra.metadata.schema.refresher.type.DropViewStatementSchemaRefresher;
+import org.apache.shardingsphere.infra.optimize.core.metadata.refresher.type.CreateTableStatementFederateRefresher;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
@@ -37,10 +39,12 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexSt
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Optional;
/**
* ShardingSphere schema refresher factory.
@@ -48,17 +52,26 @@ import java.util.Optional;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class MetadataRefresherFactory {
- private static final Map<Class<?>, MetadataRefresher> REGISTRY = new HashMap<>();
+ private static final Map<Class<?>, Collection<MetadataRefresher>> REGISTRY = new HashMap<>();
static {
- REGISTRY.put(CreateTableStatement.class, new CreateTableStatementSchemaRefresher());
- REGISTRY.put(AlterTableStatement.class, new AlterTableStatementSchemaRefresher());
- REGISTRY.put(DropTableStatement.class, new DropTableStatementSchemaRefresher());
- REGISTRY.put(CreateIndexStatement.class, new CreateIndexStatementSchemaRefresher());
- REGISTRY.put(AlterIndexStatement.class, new AlterIndexStatementSchemaRefresher());
- REGISTRY.put(DropIndexStatement.class, new DropIndexStatementSchemaRefresher());
- REGISTRY.put(CreateViewStatement.class, new CreateViewStatementSchemaRefresher());
- REGISTRY.put(DropViewStatement.class, new DropViewStatementSchemaRefresher());
+ REGISTRY.put(CreateTableStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(AlterTableStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(DropTableStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(CreateIndexStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(AlterIndexStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(DropIndexStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(CreateViewStatement.class, new LinkedHashSet<>());
+ REGISTRY.put(DropViewStatement.class, new LinkedHashSet<>());
+ REGISTRY.get(CreateTableStatement.class).add(new CreateTableStatementSchemaRefresher());
+ REGISTRY.get(CreateTableStatement.class).add(new CreateTableStatementFederateRefresher());
+ REGISTRY.get(AlterTableStatement.class).add(new AlterTableStatementSchemaRefresher());
+ REGISTRY.get(DropTableStatement.class).add(new DropTableStatementSchemaRefresher());
+ REGISTRY.get(CreateIndexStatement.class).add(new CreateIndexStatementSchemaRefresher());
+ REGISTRY.get(AlterIndexStatement.class).add(new AlterIndexStatementSchemaRefresher());
+ REGISTRY.get(DropIndexStatement.class).add(new DropIndexStatementSchemaRefresher());
+ REGISTRY.get(CreateViewStatement.class).add(new CreateViewStatementSchemaRefresher());
+ REGISTRY.get(DropViewStatement.class).add(new DropViewStatementSchemaRefresher());
}
/**
@@ -67,7 +80,12 @@ public final class MetadataRefresherFactory {
* @param sqlStatement SQL statement
* @return instance of schema refresher
*/
- public static Optional<MetadataRefresher> newInstance(final SQLStatement sqlStatement) {
- return REGISTRY.entrySet().stream().filter(entry -> entry.getKey().isAssignableFrom(sqlStatement.getClass())).findFirst().map(Entry::getValue);
+ public static Collection<MetadataRefresher> newInstance(final SQLStatement sqlStatement) {
+ for (Entry<Class<?>, Collection<MetadataRefresher>> entry : REGISTRY.entrySet()) {
+ if (entry.getKey().isAssignableFrom(sqlStatement.getClass())) {
+ return entry.getValue();
+ }
+ }
+ return Collections.emptyList();
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/refresher/MetadataRefresherFactoryTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactoryTest.java
similarity index 71%
rename from shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/refresher/MetadataRefresherFactoryTest.java
rename to shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactoryTest.java
index df80591..3eccaf4 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/refresher/MetadataRefresherFactoryTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/refresher/MetadataRefresherFactoryTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.schema.refresher;
+package org.apache.shardingsphere.infra.context.metadata.refresher;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefresherFactory;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
@@ -28,7 +27,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
@@ -36,31 +36,31 @@ public final class MetadataRefresherFactoryTest {
@Test
public void assertNewInstanceWithCreateTableStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(CreateTableStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(CreateTableStatement.class)).size(), is(2));
}
@Test
public void assertNewInstanceWithAlterTableStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(AlterTableStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(AlterTableStatement.class)).size(), is(1));
}
@Test
public void assertNewInstanceWithDropTableStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(DropTableStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(DropTableStatement.class)).size(), is(1));
}
@Test
public void assertNewInstanceWithCreateIndexStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(CreateIndexStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(CreateIndexStatement.class)).size(), is(1));
}
@Test
public void assertNewInstanceWithDropIndexStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(DropIndexStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(DropIndexStatement.class)).size(), is(1));
}
@Test
public void assertNewInstanceWithAlterIndexStatement() {
- assertTrue(MetadataRefresherFactory.newInstance(mock(AlterIndexStatement.class)).isPresent());
+ assertThat(MetadataRefresherFactory.newInstance(mock(AlterIndexStatement.class)).size(), is(1));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
index 10dc6e5..8f59adc 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.optimize.core.metadata;
import lombok.Getter;
import org.apache.commons.collections4.map.LinkedMap;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -43,4 +44,13 @@ public final class FederateSchemaMetadatas {
}
}
}
+
+ /**
+ * Get default schema metadata.
+ *
+ * @return default schema metadata
+ */
+ public FederateSchemaMetadata getDefaultSchemaMetadata() {
+ return schemas.get(DefaultSchema.LOGIC_NAME);
+ }
}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/FederateRefresher.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/FederateRefresher.java
index e580ade..1fdf83f 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/FederateRefresher.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/FederateRefresher.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.optimize.core.metadata.refresher;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefresher;
+import org.apache.shardingsphere.infra.metadata.MetadataRefresher;
import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
import org.apache.shardingsphere.infra.optimize.core.metadata.FederateSchemaMetadata;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/JDBCLockEngine.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/JDBCLockEngine.java
index 4adf330..06fb1df 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/JDBCLockEngine.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/JDBCLockEngine.java
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
import org.apache.shardingsphere.infra.lock.LockNameUtil;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefreshEngine;
+import org.apache.shardingsphere.infra.context.metadata.refresher.MetadataRefreshEngine;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
@@ -55,7 +55,8 @@ public final class JDBCLockEngine {
public JDBCLockEngine(final MetaDataContexts metaDataContexts, final JDBCExecutor jdbcExecutor) {
this.metaDataContexts = metaDataContexts;
this.jdbcExecutor = jdbcExecutor;
- metadataRefreshEngine = new MetadataRefreshEngine(metaDataContexts.getDefaultMetaData(), metaDataContexts.getProps(), metaDataContexts.getLock().orElse(null));
+ metadataRefreshEngine = new MetadataRefreshEngine(metaDataContexts.getDefaultMetaData(),
+ metaDataContexts.getOptimizeContextFactory().getSchemaMetadatas().getDefaultSchemaMetadata(), metaDataContexts.getProps(), metaDataContexts.getLock().orElse(null));
}
/**
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
index 6f8c4d8..c5ec642 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriv
import org.apache.shardingsphere.infra.merge.MergeEngine;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefreshEngine;
+import org.apache.shardingsphere.infra.context.metadata.refresher.MetadataRefreshEngine;
import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -80,6 +80,7 @@ public final class DatabaseCommunicationEngine {
proxySQLExecutor = new ProxySQLExecutor(driverType, backendConnection);
kernelProcessor = new KernelProcessor();
proxyLockEngine = new ProxyLockEngine(proxySQLExecutor, new MetadataRefreshEngine(metaData,
+ ProxyContext.getInstance().getMetaDataContexts().getOptimizeContextFactory().getSchemaMetadatas().getSchemas().get(backendConnection.getSchemaName()),
ProxyContext.getInstance().getMetaDataContexts().getProps(), ProxyContext.getInstance().getLock().orElse(null)), backendConnection.getSchemaName());
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxyLockEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxyLockEngine.java
index e5fcb56..601148f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxyLockEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxyLockEngine.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
import org.apache.shardingsphere.infra.lock.LockNameUtil;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
-import org.apache.shardingsphere.infra.metadata.engine.MetadataRefreshEngine;
+import org.apache.shardingsphere.infra.context.metadata.refresher.MetadataRefreshEngine;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.TableLockWaitTimeoutException;
import org.apache.shardingsphere.proxy.backend.exception.TableLockedException;