You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/02/07 11:32:28 UTC
[shardingsphere] branch master updated: Refactor LockDriverState
(#9375)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 70cc317 Refactor LockDriverState (#9375)
70cc317 is described below
commit 70cc3175f83dee7b5021da93c0e640ecadb41a6e
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Sun Feb 7 19:31:53 2021 +0800
Refactor LockDriverState (#9375)
* Refactor LockDriverState
* Refactor DriverJDBCExecutor
---
.../shardingsphere/driver/executor/DriverJDBCExecutor.java | 3 ++-
.../governance/internal/state/impl/LockDriverState.java | 12 ++----------
.../backend/communication/DatabaseCommunicationEngine.java | 4 ++--
3 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
index 692a0f3..16c2dcd 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
@@ -43,6 +43,7 @@ import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -150,7 +151,7 @@ public final class DriverJDBCExecutor {
}
private boolean needLock(final SQLStatement sqlStatement) {
- return MetadataRefresherFactory.newInstance(sqlStatement).isPresent();
+ return sqlStatement instanceof DDLStatement;
}
@SuppressWarnings({"unchecked", "rawtypes"})
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/state/impl/LockDriverState.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/state/impl/LockDriverState.java
index 27e5d48..463840e 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/state/impl/LockDriverState.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/state/impl/LockDriverState.java
@@ -17,16 +17,13 @@
package org.apache.shardingsphere.driver.governance.internal.state.impl;
-import org.apache.shardingsphere.driver.governance.internal.circuit.datasource.CircuitBreakerDataSource;
import org.apache.shardingsphere.driver.governance.internal.state.DriverState;
-import org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
+import org.apache.shardingsphere.driver.governance.internal.state.DriverStateContext;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.state.StateType;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.apache.shardingsphere.transaction.core.TransactionType;
-import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -42,12 +39,7 @@ public final class LockDriverState implements DriverState {
public Connection getConnection(final Map<String, DataSource> dataSourceMap,
final MetaDataContexts metaDataContexts, final TransactionContexts transactionContexts, final TransactionType transactionType) {
block(metaDataContexts);
- if (metaDataContexts.getStateContext().getCurrentState() == StateType.OK) {
- return new ShardingSphereConnection(dataSourceMap, metaDataContexts, transactionContexts, TransactionTypeHolder.get());
- } else if (metaDataContexts.getStateContext().getCurrentState() == StateType.CIRCUIT_BREAK) {
- return new CircuitBreakerDataSource().getConnection();
- }
- throw new UnsupportedOperationException(String.format("Unknown driver state type: %s", metaDataContexts.getStateContext().getCurrentState().name()));
+ return DriverStateContext.getConnection(dataSourceMap, metaDataContexts, transactionContexts, transactionType);
}
private void block(final MetaDataContexts metaDataContexts) {
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 f5683be..04a313b 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
@@ -32,7 +32,6 @@ 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.metadata.engine.MetadataRefresherFactory;
import org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier;
import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
@@ -49,6 +48,7 @@ import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryH
import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeaderBuilder;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -137,7 +137,7 @@ public final class DatabaseCommunicationEngine {
}
private boolean needLock(final ExecutionContext executionContext) {
- return MetadataRefresherFactory.newInstance(executionContext.getSqlStatementContext().getSqlStatement()).isPresent();
+ return executionContext.getSqlStatementContext().getSqlStatement() instanceof DDLStatement;
}
private void releaseGlobalLock() {