This is an automated email from the ASF dual-hosted git repository.
justinchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 8a79fa3b446 Load: Fix the Session exit issue after type conversion
(#16037)
8a79fa3b446 is described below
commit 8a79fa3b44660f37495aedc956b14aa148ebf878
Author: Zhenyu Luo <[email protected]>
AuthorDate: Fri Jul 25 16:45:16 2025 +0800
Load: Fix the Session exit issue after type conversion (#16037)
* Load: Fix the Session exit issue after type conversion
* fix
---
.../iotdb/db/protocol/session/SessionManager.java | 10 +++
.../converter/LoadTsFileDataTypeConverter.java | 81 +++++++++++++++-------
2 files changed, 67 insertions(+), 24 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
index d7c5cb6f8be..6da3ee64110 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
@@ -411,6 +411,16 @@ public class SessionManager implements SessionManagerMBean
{
IClientSession.SqlDialect.TREE);
}
+ public SessionInfo getSessionInfoOfTreeModel(IClientSession session) {
+ return new SessionInfo(
+ session.getId(),
+ session.getUsername(),
+ ZoneId.systemDefault(),
+ session.getClientVersion(),
+ session.getDatabaseName(),
+ IClientSession.SqlDialect.TREE);
+ }
+
public SessionInfo getSessionInfoOfTableModel(IClientSession session) {
return new SessionInfo(
session.getId(),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
index fea85b11f8d..59ff67f902d 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
@@ -89,18 +89,24 @@ public class LoadTsFileDataTypeConverter {
}
private TSStatus executeForTableModel(final Statement statement, final
String databaseName) {
- final IClientSession session =
- new InternalClientSession(
- String.format(
- "%s_%s",
- LoadTsFileDataTypeConverter.class.getSimpleName(),
- Thread.currentThread().getName()));
- session.setUsername(AuthorityChecker.SUPER_USER);
- session.setClientVersion(IoTDBConstant.ClientVersion.V_1_0);
- session.setZoneId(ZoneId.systemDefault());
- session.setSqlDialect(IClientSession.SqlDialect.TABLE);
-
- SESSION_MANAGER.registerSession(session);
+ final IClientSession session;
+ final boolean needToCreateSession = SESSION_MANAGER.getCurrSession() ==
null;
+ if (needToCreateSession) {
+ session =
+ new InternalClientSession(
+ String.format(
+ "%s_%s",
+ LoadTsFileDataTypeConverter.class.getSimpleName(),
+ Thread.currentThread().getName()));
+ session.setUsername(AuthorityChecker.SUPER_USER);
+ session.setClientVersion(IoTDBConstant.ClientVersion.V_1_0);
+ session.setZoneId(ZoneId.systemDefault());
+ session.setSqlDialect(IClientSession.SqlDialect.TABLE);
+
+ SESSION_MANAGER.registerSession(session);
+ } else {
+ session = SESSION_MANAGER.getCurrSession();
+ }
try {
return Coordinator.getInstance()
.executeForTableModel(
@@ -114,7 +120,9 @@ public class LoadTsFileDataTypeConverter {
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold())
.status;
} finally {
- SESSION_MANAGER.removeCurrSession();
+ if (needToCreateSession) {
+ SESSION_MANAGER.removeCurrSession();
+ }
}
}
@@ -134,17 +142,42 @@ public class LoadTsFileDataTypeConverter {
}
private TSStatus executeForTreeModel(final Statement statement) {
- return Coordinator.getInstance()
- .executeForTreeModel(
- isGeneratedByPipe ? new PipeEnrichedStatement(statement) :
statement,
- SESSION_MANAGER.requestQueryId(),
- SESSION_MANAGER.getSessionInfo(SESSION_MANAGER.getCurrSession()),
- "",
- ClusterPartitionFetcher.getInstance(),
- ClusterSchemaFetcher.getInstance(),
-
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
- false)
- .status;
+ final IClientSession session;
+ final boolean needToCreateSession = SESSION_MANAGER.getCurrSession() ==
null;
+ if (needToCreateSession) {
+ session =
+ new InternalClientSession(
+ String.format(
+ "%s_%s",
+ LoadTsFileDataTypeConverter.class.getSimpleName(),
+ Thread.currentThread().getName()));
+ session.setUsername(AuthorityChecker.SUPER_USER);
+ session.setClientVersion(IoTDBConstant.ClientVersion.V_1_0);
+ session.setZoneId(ZoneId.systemDefault());
+ session.setSqlDialect(IClientSession.SqlDialect.TREE);
+
+ SESSION_MANAGER.registerSession(session);
+ } else {
+ session = SESSION_MANAGER.getCurrSession();
+ }
+
+ try {
+ return Coordinator.getInstance()
+ .executeForTreeModel(
+ isGeneratedByPipe ? new PipeEnrichedStatement(statement) :
statement,
+ SESSION_MANAGER.requestQueryId(),
+ SESSION_MANAGER.getSessionInfoOfTreeModel(session),
+ "",
+ ClusterPartitionFetcher.getInstance(),
+ ClusterSchemaFetcher.getInstance(),
+
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
+ false)
+ .status;
+ } finally {
+ if (needToCreateSession) {
+ SESSION_MANAGER.removeCurrSession();
+ }
+ }
}
public boolean isSuccessful(final TSStatus status) {