You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by li...@apache.org on 2025/06/26 09:58:04 UTC
(iotdb) branch lyh/show-models-arch created (now a9e4ba92cc9)
This is an automated email from the ASF dual-hosted git repository.
liyuheng pushed a change to branch lyh/show-models-arch
in repository https://gitbox.apache.org/repos/asf/iotdb.git
at a9e4ba92cc9 seems done
This branch includes the following new commits:
new a9e4ba92cc9 seems done
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(iotdb) 01/01: seems done
Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
liyuheng pushed a commit to branch lyh/show-models-arch
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit a9e4ba92cc9f99ceef5a2184fec75b40b06e6db5
Author: liyuheng <li...@126.com>
AuthorDate: Thu Jun 26 17:57:50 2025 +0800
seems done
---
iotdb-core/ainode/ainode/core/handler.py | 6 ++++++
.../consensus/response/model/ModelTableResp.java | 8 +++++++-
.../apache/iotdb/confignode/manager/ModelManager.java | 18 ++++++++++++++++++
.../config/executor/ClusterConfigTaskExecutor.java | 2 +-
.../execution/config/metadata/ai/ShowModelsTask.java | 16 +++++++++++-----
.../iotdb/commons/client/ainode/AINodeClient.java | 13 +++++++++++++
.../commons/schema/column/ColumnHeaderConstant.java | 2 ++
.../thrift-ainode/src/main/thrift/ainode.thrift | 5 +++++
.../src/main/thrift/confignode.thrift | 1 +
9 files changed, 64 insertions(+), 7 deletions(-)
diff --git a/iotdb-core/ainode/ainode/core/handler.py b/iotdb-core/ainode/ainode/core/handler.py
index b338286e97b..401a57b870f 100644
--- a/iotdb-core/ainode/ainode/core/handler.py
+++ b/iotdb-core/ainode/ainode/core/handler.py
@@ -32,6 +32,7 @@ from ainode.thrift.ainode.ttypes import (
TRegisterModelReq,
TRegisterModelResp,
TTrainingReq,
+ TModelsArchResp,
)
from ainode.thrift.common.ttypes import TSStatus
@@ -58,5 +59,10 @@ class AINodeRPCServiceHandler(IAINodeRPCService.Iface):
def getAIHeartbeat(self, req: TAIHeartbeatReq) -> TAIHeartbeatResp:
return ClusterManager.get_heart_beat(req)
+ def getArch(self) -> TModelsArchResp:
+ x = TModelsArchResp(self)
+ x.archMap = {"_sundial":"good"}
+ return x
+
def createTrainingTask(self, req: TTrainingReq) -> TSStatus:
pass
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/model/ModelTableResp.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/model/ModelTableResp.java
index 9a23d9ed713..3c456b41269 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/model/ModelTableResp.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/model/ModelTableResp.java
@@ -28,11 +28,13 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
public class ModelTableResp implements DataSet {
private final TSStatus status;
private final List<ByteBuffer> serializedAllModelInformation;
+ private Map<String, String> archMap;
public ModelTableResp(TSStatus status) {
this.status = status;
@@ -50,6 +52,10 @@ public class ModelTableResp implements DataSet {
}
public TShowModelResp convertToThriftResponse() throws IOException {
- return new TShowModelResp(status, serializedAllModelInformation);
+ return new TShowModelResp(status, serializedAllModelInformation).setArchMap(archMap);
+ }
+
+ public void setArchMap(Map<String, String> archMap) {
+ this.archMap = archMap;
}
}
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ModelManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ModelManager.java
index 2ebc4d71dfc..76f4f42fa1c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ModelManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ModelManager.java
@@ -19,7 +19,10 @@
package org.apache.iotdb.confignode.manager;
+import org.apache.iotdb.common.rpc.thrift.TEndPoint;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.client.ainode.AINodeClient;
+import org.apache.iotdb.commons.client.ainode.AINodeClientManager;
import org.apache.iotdb.commons.model.ModelInformation;
import org.apache.iotdb.commons.model.ModelStatus;
import org.apache.iotdb.commons.model.ModelType;
@@ -30,6 +33,7 @@ import org.apache.iotdb.confignode.consensus.request.write.model.UpdateModelInfo
import org.apache.iotdb.confignode.consensus.response.model.GetModelInfoResp;
import org.apache.iotdb.confignode.consensus.response.model.ModelTableResp;
import org.apache.iotdb.confignode.persistence.ModelInfo;
+import org.apache.iotdb.confignode.rpc.thrift.TAINodeInfo;
import org.apache.iotdb.confignode.rpc.thrift.TCreateModelReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropModelReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetModelInfoReq;
@@ -47,6 +51,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
public class ModelManager {
@@ -92,8 +97,21 @@ public class ModelManager {
}
public TShowModelResp showModel(final TShowModelReq req) {
+ TAINodeInfo registeredAINode =
+ configManager.getNodeManager().getRegisteredAINodeInfoList().get(0);
+ TEndPoint targetAINodeEndPoint =
+ new TEndPoint(registeredAINode.getInternalAddress(), registeredAINode.getInternalPort());
+ Map<String, String> archMap;
+ try (AINodeClient client =
+ AINodeClientManager.getInstance().borrowClient(targetAINodeEndPoint)) {
+ archMap = client.getArch().getArchMap();
+ } catch (Exception e) {
+ LOGGER.warn("Failed to get archMap", e);
+ archMap = Collections.emptyMap();
+ }
try {
final DataSet response = configManager.getConsensusManager().read(new ShowModelPlan(req));
+ ((ModelTableResp) response).setArchMap(archMap);
return ((ModelTableResp) response).convertToThriftResponse();
} catch (final ConsensusException e) {
LOGGER.warn(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 39c2bda7298..eef11e684f8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -3321,7 +3321,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
return future;
}
// convert model info list and buildTsBlock
- ShowModelsTask.buildTsBlock(showModelResp.getModelInfoList(), future);
+ ShowModelsTask.buildTsBlock(showModelResp, future);
} catch (final ClientManagerException | TException e) {
future.setException(e);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ai/ShowModelsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ai/ShowModelsTask.java
index 78ded3da6e9..d4aac9dc91c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ai/ShowModelsTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ai/ShowModelsTask.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ai;
import org.apache.iotdb.commons.model.ModelType;
import org.apache.iotdb.commons.schema.column.ColumnHeader;
import org.apache.iotdb.commons.schema.column.ColumnHeaderConstant;
+import org.apache.iotdb.confignode.rpc.thrift.TShowModelResp;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
@@ -38,6 +39,7 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -62,7 +64,9 @@ public class ShowModelsTask implements IConfigTask {
}
public static void buildTsBlock(
- List<ByteBuffer> modelInfoList, SettableFuture<ConfigTaskResult> future) {
+ TShowModelResp resp, SettableFuture<ConfigTaskResult> future) {
+ List<ByteBuffer> modelInfoList = resp.getModelInfoList();
+ Map<String, String> archMap = resp.getArchMap();
List<TSDataType> outputDataTypes =
ColumnHeaderConstant.showModelsColumnHeaders.stream()
.map(ColumnHeader::getColumnType)
@@ -71,6 +75,7 @@ public class ShowModelsTask implements IConfigTask {
for (ByteBuffer modelInfo : modelInfoList) {
String modelId = ReadWriteIOUtils.readString(modelInfo);
String modelType = ReadWriteIOUtils.readString(modelInfo);
+ String modelArch = archMap.getOrDefault(modelId, "Unknown");
String state = ReadWriteIOUtils.readString(modelInfo);
String note;
String config;
@@ -97,12 +102,13 @@ public class ShowModelsTask implements IConfigTask {
builder.getTimeColumnBuilder().writeLong(0L);
builder.getColumnBuilder(0).writeBinary(BytesUtils.valueOf(modelId));
builder.getColumnBuilder(1).writeBinary(BytesUtils.valueOf(modelType));
- builder.getColumnBuilder(2).writeBinary(BytesUtils.valueOf(state));
- builder.getColumnBuilder(3).writeBinary(BytesUtils.valueOf(config));
+ builder.getColumnBuilder(2).writeBinary(BytesUtils.valueOf(modelArch));
+ builder.getColumnBuilder(3).writeBinary(BytesUtils.valueOf(state));
+ builder.getColumnBuilder(4).writeBinary(BytesUtils.valueOf(config));
if (note != null) {
- builder.getColumnBuilder(4).writeBinary(BytesUtils.valueOf(note));
+ builder.getColumnBuilder(5).writeBinary(BytesUtils.valueOf(note));
} else {
- builder.getColumnBuilder(4).writeBinary(BytesUtils.valueOf(""));
+ builder.getColumnBuilder(5).writeBinary(BytesUtils.valueOf(""));
}
builder.declarePosition();
}
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/client/ainode/AINodeClient.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/client/ainode/AINodeClient.java
index 346a459136a..a7c10bbd92e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/client/ainode/AINodeClient.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/client/ainode/AINodeClient.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.ainode.rpc.thrift.TForecastReq;
import org.apache.iotdb.ainode.rpc.thrift.TForecastResp;
import org.apache.iotdb.ainode.rpc.thrift.TInferenceReq;
import org.apache.iotdb.ainode.rpc.thrift.TInferenceResp;
+import org.apache.iotdb.ainode.rpc.thrift.TModelsArchResp;
import org.apache.iotdb.ainode.rpc.thrift.TRegisterModelReq;
import org.apache.iotdb.ainode.rpc.thrift.TRegisterModelResp;
import org.apache.iotdb.ainode.rpc.thrift.TTrainingReq;
@@ -158,6 +159,18 @@ public class AINodeClient implements AutoCloseable, ThriftClient {
}
}
+ public TModelsArchResp getArch() throws TException {
+ try {
+ return client.getArch();
+ } catch (TException e) {
+ logger.warn(
+ "Failed to connect to AINode from ConfigNode when executing {}: {}",
+ Thread.currentThread().getStackTrace()[1].getMethodName(),
+ e.getMessage());
+ throw new TException(MSG_CONNECTION_FAIL);
+ }
+ }
+
public TInferenceResp inference(
String modelId,
TsBlock inputTsBlock,
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
index 72fe1ce0236..325127ab8b5 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
@@ -278,6 +278,7 @@ public class ColumnHeaderConstant {
// column names for show models/trials
public static final String MODEL_ID = "ModelId";
+ public static final String ARCHITECTURE = "Architecture";
// column names for views (e.g. logical view)
public static final String VIEW_TYPE = "ViewType";
@@ -612,6 +613,7 @@ public class ColumnHeaderConstant {
ImmutableList.of(
new ColumnHeader(MODEL_ID, TSDataType.TEXT),
new ColumnHeader(MODEL_TYPE, TSDataType.TEXT),
+ new ColumnHeader(ARCHITECTURE, TSDataType.TEXT),
new ColumnHeader(STATE, TSDataType.TEXT),
new ColumnHeader(CONFIGS, TSDataType.TEXT),
new ColumnHeader(NOTES, TSDataType.TEXT));
diff --git a/iotdb-protocol/thrift-ainode/src/main/thrift/ainode.thrift b/iotdb-protocol/thrift-ainode/src/main/thrift/ainode.thrift
index db1a15c2460..dd1ad4afd0b 100644
--- a/iotdb-protocol/thrift-ainode/src/main/thrift/ainode.thrift
+++ b/iotdb-protocol/thrift-ainode/src/main/thrift/ainode.thrift
@@ -98,9 +98,14 @@ struct TForecastResp {
2: required binary forecastResult
}
+struct TModelsArchResp {
+ 1: required map<string, string> archMap
+}
+
service IAINodeRPCService {
// -------------- For Config Node --------------
+ TModelsArchResp getArch()
common.TSStatus deleteModel(TDeleteModelReq req)
diff --git a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
index f767f35d67c..2e4327d653a 100644
--- a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
@@ -1064,6 +1064,7 @@ struct TShowModelReq {
struct TShowModelResp {
1: required common.TSStatus status
2: required list<binary> modelInfoList
+ 3: optional map<string, string> archMap
}
struct TGetModelInfoReq {