ddl's prepare-stage must send the master instance

This commit is contained in:
wd2365151147
2022-01-07 17:13:55 +08:00
parent a49f5e4ae2
commit de6f500fc3
2 changed files with 10 additions and 1 deletions
@@ -101,7 +101,7 @@ public abstract class BaseDDLHandler implements ResponseHandler, ExecutableHandl
} else {
node.setRunOnSlave(rrs.getRunOnSlave());
ShardingNode dn = DbleServer.getInstance().getConfig().getShardingNodes().get(node.getName());
dn.getConnection(dn.getDatabase(), session.getShardingService().isTxStart(), sessionAutocommit, node, this, node);
dn.getConnection(dn.getDatabase(), isMustWrite(), sessionAutocommit, node, this, node);
}
}
} finally {
@@ -109,6 +109,10 @@ public abstract class BaseDDLHandler implements ResponseHandler, ExecutableHandl
}
}
protected boolean isMustWrite() {
return session.getShardingService().isTxStart();
}
protected void executeInExistsConnection(BackendConnection conn, RouteResultsetNode node) {
TraceManager.TraceObject traceObject = TraceManager.serviceTrace(session.getShardingService(), "execute-in-exists-connection");
try {
@@ -31,6 +31,11 @@ public class MultiNodeDdlPrepareHandler extends BaseDDLHandler {
this.traceMessage = "execute-for-ddl-prepare";
}
@Override
protected boolean isMustWrite() {
return true;
}
@Override
protected void innerExecute(BackendConnection conn, RouteResultsetNode node) {
if (clearIfSessionClosed()) return;