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;

Reply via email to