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 5c226cc5f65 Decouple XABeginProxyBackendHandler and ProxyContext
(#36816)
5c226cc5f65 is described below
commit 5c226cc5f65574173a98e39dc7bccfcd40fa4048
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Oct 8 16:57:09 2025 +0800
Decouple XABeginProxyBackendHandler and ProxyContext (#36816)
* Decouple XABeginProxyBackendHandler and ProxyContext
* Decouple XABeginProxyBackendHandler and ProxyContext
---
.../core/metadata/data/revise/SchemaTableMetaDataAggregator.java | 8 ++++----
.../backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java | 2 +-
.../backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java | 8 +++++---
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/revise/SchemaTableMetaDataAggregator.java
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/revise/SchemaTableMetaDataAggregator.java
index cc53dd1706b..11b2d8f092c 100644
---
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/revise/SchemaTableMetaDataAggregator.java
+++
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/revise/SchemaTableMetaDataAggregator.java
@@ -33,11 +33,11 @@ import java.util.stream.Collectors;
public final class SchemaTableMetaDataAggregator {
/**
- * Aggregate table metadata.
+ * Aggregate table meta data.
*
- * @param checkTableMetaDataEnabled check table metadata enabled
- * @param tableMetaDataMap table metadata map
- * @return table metadata
+ * @param checkTableMetaDataEnabled check table meta data enabled
+ * @param tableMetaDataMap table meta data map
+ * @return table meta data
*/
public Collection<TableMetaData> aggregate(final boolean
checkTableMetaDataEnabled, final Map<String, Collection<TableMetaData>>
tableMetaDataMap) {
Collection<TableMetaData> result = new LinkedList<>();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
index e82ff84469d..53a5e8d3c5f 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
@@ -55,7 +55,7 @@ public final class XATCLProxyBackendHandlerFactory {
return new XARecoveryProxyBackendHandler(databaseProxyConnector);
}
if (sqlStatement instanceof XABeginStatement) {
- return new XABeginProxyBackendHandler(connectionSession,
databaseProxyConnector);
+ return new XABeginProxyBackendHandler(connectionSession,
databaseProxyConnector, queryContext.getMetaData());
}
if (sqlStatement instanceof XACommitStatement) {
return new XACommitProxyBackendHandler(connectionSession,
databaseProxyConnector);
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
index e7af8b2ea15..58c8bad59ae 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
@@ -19,8 +19,8 @@ package
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.proxy.backend.connector.DatabaseProxyConnector;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -41,14 +41,16 @@ public final class XABeginProxyBackendHandler implements
ProxyBackendHandler {
private final DatabaseProxyConnector databaseProxyConnector;
+ private final ShardingSphereMetaData metaData;
+
/*
- * We have to let session occupy the thread when doing xa transaction.
According to https://dev.mysql.com/doc/refman/5.7/en/xa-states.html XA and
local transactions are mutually exclusive.
+ * We have to let session occupy the thread when doing XA transaction.
According to https://dev.mysql.com/doc/refman/5.7/en/xa-states.html XA and
local transactions are mutually exclusive.
*/
@Override
public ResponseHeader execute() throws SQLException {
ShardingSpherePreconditions.checkState(!connectionSession.getTransactionStatus().isInTransaction(),
XATransactionNestedBeginException::new);
ResponseHeader result = databaseProxyConnector.execute();
- TransactionRule transactionRule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TransactionRule.class);
+ TransactionRule transactionRule =
metaData.getGlobalRuleMetaData().getSingleRule(TransactionRule.class);
ShardingSphereTransactionManagerEngine engine =
transactionRule.getResource();
connectionSession.getConnectionContext().getTransactionContext().beginTransaction(transactionRule.getDefaultType().name(),
engine.getTransactionManager(transactionRule.getDefaultType()));
return result;