You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/10/20 05:37:30 UTC
[iotdb] branch master updated: [IOTDB-4698]Implement interface of getLocationOfStatefulTrigger (#7663)
This is an automated email from the ASF dual-hosted git repository.
jackietien 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 40571eb259 [IOTDB-4698]Implement interface of getLocationOfStatefulTrigger (#7663)
40571eb259 is described below
commit 40571eb259f27d2c3b40c578b22e5b18e785046f
Author: Weihao Li <60...@users.noreply.github.com>
AuthorDate: Thu Oct 20 13:37:25 2022 +0800
[IOTDB-4698]Implement interface of getLocationOfStatefulTrigger (#7663)
---
.../consensus/request/ConfigPhysicalPlan.java | 4 ++
.../consensus/request/ConfigPhysicalPlanType.java | 3 +-
.../request/read/GetTriggerLocationPlan.java | 62 ++++++++++++++++++++++
.../consensus/response/TriggerLocationResp.java | 49 +++++++++++++++++
.../iotdb/confignode/manager/ConfigManager.java | 9 ++++
.../apache/iotdb/confignode/manager/IManager.java | 4 ++
.../iotdb/confignode/manager/TriggerManager.java | 16 +++++-
.../iotdb/confignode/persistence/TriggerInfo.java | 17 ++++++
.../persistence/executor/ConfigPlanExecutor.java | 3 ++
.../thrift/ConfigNodeRPCServiceProcessor.java | 4 +-
.../request/ConfigPhysicalPlanSerDeTest.java | 11 ++++
.../apache/iotdb/commons/trigger/TriggerTable.java | 5 ++
.../apache/iotdb/db/client/ConfigNodeClient.java | 2 +-
.../src/main/thrift/confignode.thrift | 2 +-
14 files changed, 183 insertions(+), 8 deletions(-)
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
index be83d6f453..c38ec65dae 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
@@ -34,6 +34,7 @@ import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTimeSlotListPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTransferringTriggersPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerJarPlan;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.CheckTemplateSettablePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.GetAllSchemaTemplatePlan;
@@ -243,6 +244,9 @@ public abstract class ConfigPhysicalPlan implements IConsensusRequest {
case GetTriggerTable:
req = new GetTriggerTablePlan();
break;
+ case GetTriggerLocation:
+ req = new GetTriggerLocationPlan();
+ break;
case GetTriggerJar:
req = new GetTriggerJarPlan();
break;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
index e81f4ddcc6..f2492a1766 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
@@ -95,5 +95,6 @@ public enum ConfigPhysicalPlanType {
GetTimeSlotList,
UpdateTriggersOnTransferNodes,
UpdateTriggerLocation,
- GetTransferringTriggers
+ GetTransferringTriggers,
+ GetTriggerLocation
}
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerLocationPlan.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerLocationPlan.java
new file mode 100644
index 0000000000..1024aa7e33
--- /dev/null
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerLocationPlan.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.confignode.consensus.request.read;
+
+import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
+import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+public class GetTriggerLocationPlan extends ConfigPhysicalPlan {
+
+ String triggerName;
+
+ public GetTriggerLocationPlan() {
+ super(ConfigPhysicalPlanType.GetTriggerLocation);
+ }
+
+ public GetTriggerLocationPlan(String triggerName) {
+ this();
+ this.triggerName = triggerName;
+ }
+
+ public String getTriggerName() {
+ return triggerName;
+ }
+
+ public void setTriggerName(String triggerName) {
+ this.triggerName = triggerName;
+ }
+
+ @Override
+ protected void serializeImpl(DataOutputStream stream) throws IOException {
+ stream.writeInt(ConfigPhysicalPlanType.GetTriggerLocation.ordinal());
+
+ ReadWriteIOUtils.write(triggerName, stream);
+ }
+
+ @Override
+ protected void deserializeImpl(ByteBuffer buffer) throws IOException {
+ this.triggerName = ReadWriteIOUtils.readString(buffer);
+ }
+}
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerLocationResp.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerLocationResp.java
new file mode 100644
index 0000000000..12a8165945
--- /dev/null
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerLocationResp.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.confignode.consensus.response;
+
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.confignode.rpc.thrift.TGetLocationForTriggerResp;
+import org.apache.iotdb.consensus.common.DataSet;
+
+public class TriggerLocationResp implements DataSet {
+
+ private TSStatus status;
+
+ private TDataNodeLocation dataNodeLocation;
+
+ public TriggerLocationResp(TSStatus status, TDataNodeLocation dataNodeLocation) {
+ this.status = status;
+ this.dataNodeLocation = dataNodeLocation;
+ }
+
+ public void setDataNodeLocation(TDataNodeLocation dataNodeLocation) {
+ this.dataNodeLocation = dataNodeLocation;
+ }
+
+ public void setStatus(TSStatus status) {
+ this.status = status;
+ }
+
+ public TGetLocationForTriggerResp convertToThriftResponse() {
+ return new TGetLocationForTriggerResp(status).setDataNodeLocation(dataNodeLocation);
+ }
+}
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 1165a52c83..1f76144618 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -94,6 +94,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteTimeSeriesReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetAllTemplatesResp;
+import org.apache.iotdb.confignode.rpc.thrift.TGetLocationForTriggerResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetPathsSetTemplatesResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkResp;
@@ -815,6 +816,14 @@ public class ConfigManager implements IManager {
: new TGetTriggerTableResp(status, Collections.emptyList());
}
+ @Override
+ public TGetLocationForTriggerResp getLocationOfStatefulTrigger(String triggerName) {
+ TSStatus status = confirmLeader();
+ return status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()
+ ? triggerManager.getLocationOfStatefulTrigger(triggerName)
+ : new TGetLocationForTriggerResp(status);
+ }
+
@Override
public TGetTriggerJarResp getTriggerJar(TGetTriggerJarReq req) {
TSStatus status = confirmLeader();
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
index b45989915a..a0f3ce3041 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
@@ -55,6 +55,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteTimeSeriesReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetAllTemplatesResp;
+import org.apache.iotdb.confignode.rpc.thrift.TGetLocationForTriggerResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetPathsSetTemplatesResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkResp;
@@ -313,6 +314,9 @@ public interface IManager {
/** DataNode refresh stateful trigger cache */
TGetTriggerTableResp getStatefulTriggerTable();
+ /** Get DataNodeLocation of stateful trigger */
+ TGetLocationForTriggerResp getLocationOfStatefulTrigger(String triggerName);
+
/** Get Trigger jar */
TGetTriggerJarResp getTriggerJar(TGetTriggerJarReq req);
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
index 7080a6d56a..e56e4475e1 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
@@ -29,16 +29,19 @@ import org.apache.iotdb.confignode.client.async.AsyncDataNodeClientPool;
import org.apache.iotdb.confignode.client.async.handlers.AsyncClientHandler;
import org.apache.iotdb.confignode.consensus.request.read.GetTransferringTriggersPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerJarPlan;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggersOnTransferNodesPlan;
import org.apache.iotdb.confignode.consensus.response.TransferringTriggersResp;
import org.apache.iotdb.confignode.consensus.response.TriggerJarResp;
+import org.apache.iotdb.confignode.consensus.response.TriggerLocationResp;
import org.apache.iotdb.confignode.consensus.response.TriggerTableResp;
import org.apache.iotdb.confignode.manager.node.NodeManager;
import org.apache.iotdb.confignode.persistence.TriggerInfo;
import org.apache.iotdb.confignode.rpc.thrift.TCreateTriggerReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
+import org.apache.iotdb.confignode.rpc.thrift.TGetLocationForTriggerResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerJarReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerJarResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerTableResp;
@@ -129,6 +132,15 @@ public class TriggerManager {
}
}
+ public TGetLocationForTriggerResp getLocationOfStatefulTrigger(String triggerName) {
+ return ((TriggerLocationResp)
+ configManager
+ .getConsensusManager()
+ .read(new GetTriggerLocationPlan(triggerName))
+ .getDataset())
+ .convertToThriftResponse();
+ }
+
public TGetTriggerJarResp getTriggerJar(TGetTriggerJarReq req) {
try {
return ((TriggerJarResp)
@@ -161,7 +173,7 @@ public class TriggerManager {
* @return result of transferTrigger
*/
public TSStatus transferTrigger(
- List<TDataNodeLocation> newUnknownDataList,
+ List<TDataNodeLocation> newUnknownDataNodeList,
Map<Integer, TDataNodeLocation> dataNodeLocationMap) {
TSStatus transferResult;
triggerInfo.acquireTriggerTableLock();
@@ -171,7 +183,7 @@ public class TriggerManager {
transferResult =
consensusManager
- .write(new UpdateTriggersOnTransferNodesPlan(newUnknownDataList))
+ .write(new UpdateTriggersOnTransferNodesPlan(newUnknownDataNodeList))
.getStatus();
if (transferResult.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return transferResult;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
index 341129110f..9f283d97c1 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.confignode.persistence;
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.executable.ExecutableManager;
import org.apache.iotdb.commons.snapshot.SnapshotProcessor;
@@ -30,6 +31,7 @@ import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
import org.apache.iotdb.confignode.consensus.request.read.GetTransferringTriggersPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerJarPlan;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
import org.apache.iotdb.confignode.consensus.request.write.trigger.AddTriggerInTablePlan;
import org.apache.iotdb.confignode.consensus.request.write.trigger.DeleteTriggerInTablePlan;
@@ -38,8 +40,10 @@ import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTrigger
import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggersOnTransferNodesPlan;
import org.apache.iotdb.confignode.consensus.response.TransferringTriggersResp;
import org.apache.iotdb.confignode.consensus.response.TriggerJarResp;
+import org.apache.iotdb.confignode.consensus.response.TriggerLocationResp;
import org.apache.iotdb.confignode.consensus.response.TriggerTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
+import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
@@ -176,6 +180,19 @@ public class TriggerInfo implements SnapshotProcessor {
}
}
+ public DataSet getTriggerLocation(GetTriggerLocationPlan req) {
+ TDataNodeLocation dataNodeLocation = triggerTable.getTriggerLocation(req.getTriggerName());
+ if (dataNodeLocation != null) {
+ return new TriggerLocationResp(
+ new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()), dataNodeLocation);
+ } else {
+ return new TriggerLocationResp(
+ new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode())
+ .setMessage(String.format("Fail to get Location trigger[%s]", req.getTriggerName())),
+ null);
+ }
+ }
+
public TriggerJarResp getTriggerJar(GetTriggerJarPlan physicalPlan) {
List<ByteBuffer> jarList = new ArrayList<>();
try {
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index ee2a4849e1..e5815cd695 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -37,6 +37,7 @@ import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTimeSlotListPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTransferringTriggersPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerJarPlan;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.CheckTemplateSettablePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.GetPathsSetTemplatePlan;
@@ -186,6 +187,8 @@ public class ConfigPlanExecutor {
return syncInfo.showPipe((ShowPipePlan) req);
case GetTriggerTable:
return triggerInfo.getTriggerTable((GetTriggerTablePlan) req);
+ case GetTriggerLocation:
+ return triggerInfo.getTriggerLocation((GetTriggerLocationPlan) req);
case GetTriggerJar:
return triggerInfo.getTriggerJar((GetTriggerJarPlan) req);
case GetTransferringTriggers:
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
index 8603f18648..aab23491c2 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
@@ -516,9 +516,7 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac
@Override
public TGetLocationForTriggerResp getLocationOfStatefulTrigger(String triggerName) {
- // todo: implementation
- return new TGetLocationForTriggerResp(
- new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()), null);
+ return configManager.getLocationOfStatefulTrigger(triggerName);
}
public TGetTriggerJarResp getTriggerJar(TGetTriggerJarReq req) {
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index 4858362c81..d76d6833c8 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -54,6 +54,7 @@ import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTimeSlotListPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTransferringTriggersPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerJarPlan;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerLocationPlan;
import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.GetAllSchemaTemplatePlan;
import org.apache.iotdb.confignode.consensus.request.read.template.GetAllTemplateSetInfoPlan;
@@ -955,6 +956,16 @@ public class ConfigPhysicalPlanSerDeTest {
getTriggerTablePlan0.isOnlyStateful(), getTriggerTablePlan1.isOnlyStateful());
}
+ @Test
+ public void GetTriggerLocationPlanTest() throws IOException {
+ GetTriggerLocationPlan getTriggerLocationPlan0 = new GetTriggerLocationPlan("test1");
+ GetTriggerLocationPlan getTriggerLocationPlan1 =
+ (GetTriggerLocationPlan)
+ ConfigPhysicalPlan.Factory.create(getTriggerLocationPlan0.serializeToByteBuffer());
+ Assert.assertEquals(
+ getTriggerLocationPlan0.getTriggerName(), getTriggerLocationPlan1.getTriggerName());
+ }
+
@Test
public void AddTriggerInTablePlanTest() throws IOException, IllegalPathException {
TriggerInformation triggerInformation =
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java b/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
index fbc09275ae..ae28de2801 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
@@ -88,6 +88,11 @@ public class TriggerTable {
.collect(Collectors.toList());
}
+ public TDataNodeLocation getTriggerLocation(String triggerName) {
+ TriggerInformation triggerInformation = triggerTable.get(triggerName);
+ return triggerInformation == null ? null : triggerInformation.getDataNodeLocation();
+ }
+
public List<String> getTransferringTriggers() {
return triggerTable.values().stream()
.filter(
diff --git a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
index a3d4f38722..df0e0b65e8 100644
--- a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
@@ -957,7 +957,7 @@ public class ConfigNodeClient
public TGetTriggerTableResp getStatefulTriggerTable() throws TException {
for (int i = 0; i < RETRY_NUM; i++) {
try {
- TGetTriggerTableResp resp = client.getTriggerTable();
+ TGetTriggerTableResp resp = client.getStatefulTriggerTable();
if (!updateConfigNodeLeader(resp.getStatus())) {
return resp;
}
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift b/thrift-confignode/src/main/thrift/confignode.thrift
index 21591ddcab..4af568e3e0 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -344,7 +344,7 @@ struct TDropTriggerReq {
struct TGetLocationForTriggerResp {
1: required common.TSStatus status
- 2: required common.TDataNodeLocation dataNodeLocation
+ 2: optional common.TDataNodeLocation dataNodeLocation
}
// Get trigger table from config node