This is an automated email from the ASF dual-hosted git repository. ycycse pushed a commit to branch AINodeErrorFix in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 14b9ab2c4da89fa05e319255e3399e151a59657e Author: YangCaiyin <[email protected]> AuthorDate: Wed Feb 26 15:04:58 2025 +0800 [AINode] Optimize the error information when dropping built-in model (#14943) (cherry picked from commit de10ea7891100a58d16a504785f21e3fecdf3555) --- .../src/test/java/org/apache/iotdb/ainode/it/AINodeBasicIT.java | 2 ++ .../main/java/org/apache/iotdb/confignode/manager/ModelManager.java | 5 +++++ .../main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeBasicIT.java b/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeBasicIT.java index 265fbf4e301..3b54b5c4409 100644 --- a/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeBasicIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeBasicIT.java @@ -247,5 +247,7 @@ public class AINodeBasicIT { "301: The number of rows 5 in the input data does not match the model input 7. Try to use LIMIT in SQL or WINDOW in CALL INFERENCE"); sql = "CREATE MODEL 中文 USING URI \"" + MODEL_PATH + "\""; errorTest(sql, "701: ModelName can only contain letters, numbers, and underscores"); + sql = "DROP MODEL _GaussianHMM"; + errorTest(sql, "1502: Built-in model _GaussianHMM can't be removed"); } } 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 6121b30a886..3c19dfdb14a 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 @@ -20,6 +20,7 @@ package org.apache.iotdb.confignode.manager; import org.apache.iotdb.common.rpc.thrift.TSStatus; +import org.apache.iotdb.commons.model.ModelType; import org.apache.iotdb.confignode.consensus.request.read.model.GetModelInfoPlan; import org.apache.iotdb.confignode.consensus.request.read.model.ShowModelPlan; import org.apache.iotdb.confignode.consensus.response.model.GetModelInfoResp; @@ -63,6 +64,10 @@ public class ModelManager { } public TSStatus dropModel(TDropModelReq req) { + if (modelInfo.checkModelType(req.getModelId()) != ModelType.USER_DEFINED) { + return new TSStatus(TSStatusCode.MODEL_EXIST_ERROR.getStatusCode()) + .setMessage(String.format("Built-in model %s can't be removed", req.modelId)); + } if (!modelInfo.contain(req.modelId)) { return new TSStatus(TSStatusCode.MODEL_EXIST_ERROR.getStatusCode()) .setMessage(String.format("Model name %s doesn't exists", req.modelId)); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java index d3407e5c5de..21b317d9854 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java @@ -233,7 +233,7 @@ public class ModelInfo implements SnapshotProcessor { return false; } - private ModelType checkModelType(String modelName) { + public ModelType checkModelType(String modelName) { if (containsBuiltInModelName(builtInForecastModel, modelName)) { return ModelType.BUILT_IN_FORECAST; } else if (containsBuiltInModelName(builtInAnomalyDetectionModel, modelName)) {
