This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch TriggerTest
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/TriggerTest by this push:
     new b8e3e13f88 Show Trigger (#7438)
b8e3e13f88 is described below

commit b8e3e13f880b45aebfae9d94939c9ef3473b21ce
Author: Weihao Li <[email protected]>
AuthorDate: Tue Sep 27 09:40:00 2022 +0800

    Show Trigger (#7438)
---
 .../consensus/request/ConfigPhysicalPlan.java      |  4 ++
 .../consensus/request/ConfigPhysicalPlanType.java  |  1 +
 .../request/read/GetTriggerTablePlan.java          | 42 +++++++++++++
 .../consensus/response/TriggerTableResp.java       | 70 ++++++++++++++++++++++
 .../iotdb/confignode/manager/ConfigManager.java    |  9 +++
 .../apache/iotdb/confignode/manager/IManager.java  |  4 ++
 .../iotdb/confignode/manager/TriggerManager.java   | 18 ++++++
 .../iotdb/confignode/manager/node/NodeManager.java |  2 +-
 .../iotdb/confignode/persistence/TriggerInfo.java  |  7 +++
 .../persistence/executor/ConfigPlanExecutor.java   |  2 +
 .../thrift/ConfigNodeRPCServiceProcessor.java      |  4 +-
 .../config/executor/ClusterConfigTaskExecutor.java |  6 +-
 .../config/metadata/ShowTriggersTask.java          | 10 ++--
 .../src/main/thrift/confignode.thrift              |  2 +-
 14 files changed, 169 insertions(+), 12 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 f7ffe6c0e2..9a2fa55f59 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
@@ -28,6 +28,7 @@ import 
org.apache.iotdb.confignode.consensus.request.read.GetOrCreateSchemaParti
 import 
org.apache.iotdb.confignode.consensus.request.read.GetRegionInfoListPlan;
 import 
org.apache.iotdb.confignode.consensus.request.read.GetSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
+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;
 import 
org.apache.iotdb.confignode.consensus.request.read.template.GetAllTemplateSetInfoPlan;
@@ -225,6 +226,9 @@ public abstract class ConfigPhysicalPlan implements 
IConsensusRequest {
         case UpdateTriggerStateInTable:
           req = new UpdateTriggerStateInTablePlan();
           break;
+        case GetTriggerTable:
+          req = new GetTriggerTablePlan();
+          break;
         case CreateSchemaTemplate:
           req = new CreateSchemaTemplatePlan();
           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 a9ce372c88..faa895f937 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
@@ -68,6 +68,7 @@ public enum ConfigPhysicalPlanType {
   DropFunction,
   AddTriggerInTable,
   DeleteTriggerInTable,
+  GetTriggerTable,
   UpdateTriggerStateInTable,
   GetRegionInfoList,
   GetDataNodesInfoList,
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerTablePlan.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerTablePlan.java
new file mode 100644
index 0000000000..da1caa3ca7
--- /dev/null
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetTriggerTablePlan.java
@@ -0,0 +1,42 @@
+/*
+ * 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 java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+public class GetTriggerTablePlan extends ConfigPhysicalPlan {
+
+  public GetTriggerTablePlan() {
+    super(ConfigPhysicalPlanType.GetTriggerTable);
+  }
+
+  @Override
+  protected void serializeImpl(DataOutputStream stream) throws IOException {
+    stream.writeInt(ConfigPhysicalPlanType.GetTriggerTable.ordinal());
+  }
+
+  @Override
+  protected void deserializeImpl(ByteBuffer buffer) throws IOException {}
+}
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerTableResp.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerTableResp.java
new file mode 100644
index 0000000000..77305ac07f
--- /dev/null
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/TriggerTableResp.java
@@ -0,0 +1,70 @@
+/*
+ * 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.TSStatus;
+import org.apache.iotdb.commons.trigger.TriggerInformation;
+import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerTableResp;
+import org.apache.iotdb.consensus.common.DataSet;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+public class TriggerTableResp implements DataSet {
+
+  private TSStatus status;
+
+  private List<TriggerInformation> allTriggerInformation;
+
+  public TriggerTableResp() {}
+
+  public TriggerTableResp(TSStatus status, List<TriggerInformation> 
allTriggerInformation) {
+    this.status = status;
+    this.allTriggerInformation = allTriggerInformation;
+  }
+
+  public TSStatus getStatus() {
+    return status;
+  }
+
+  public void setStatus(TSStatus status) {
+    this.status = status;
+  }
+
+  public List<TriggerInformation> getAllTriggerInformation() {
+    return allTriggerInformation;
+  }
+
+  public void setAllTriggerInformation(List<TriggerInformation> 
allTriggerInformation) {
+    this.allTriggerInformation = allTriggerInformation;
+  }
+
+  public TGetTriggerTableResp convertToThriftResponse() throws IOException {
+    List<ByteBuffer> triggerInformationByteBuffers = new ArrayList<>();
+
+    for (TriggerInformation triggerInformation : allTriggerInformation) {
+      triggerInformationByteBuffers.add(triggerInformation.serialize());
+    }
+
+    return new TGetTriggerTableResp(status, triggerInformationByteBuffers);
+  }
+}
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 2babc8c52f..62cbb2f2e1 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
@@ -88,6 +88,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TGetAllTemplatesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TGetPathsSetTemplatesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TGetTemplateResp;
+import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerTableResp;
 import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp;
 import org.apache.iotdb.confignode.rpc.thrift.TRegionMigrateResultReportReq;
 import org.apache.iotdb.confignode.rpc.thrift.TRegionRouteMapResp;
@@ -766,6 +767,14 @@ public class ConfigManager implements IManager {
         : status;
   }
 
+  @Override
+  public TGetTriggerTableResp getTriggerTable() {
+    TSStatus status = confirmLeader();
+    return status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()
+        ? triggerManager.getTriggerTable()
+        : new TGetTriggerTableResp().setStatus(status);
+  }
+
   @Override
   public TSStatus merge() {
     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 40192d6329..ab979eea82 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
@@ -50,6 +50,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TGetAllTemplatesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TGetPathsSetTemplatesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TGetTemplateResp;
+import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerTableResp;
 import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp;
 import org.apache.iotdb.confignode.rpc.thrift.TRegionMigrateResultReportReq;
 import org.apache.iotdb.confignode.rpc.thrift.TRegionRouteMapResp;
@@ -289,6 +290,9 @@ public interface IManager {
   /** Drop trigger */
   TSStatus dropTrigger(TDropTriggerReq req);
 
+  /** Show trigger & DataNode start */
+  TGetTriggerTableResp getTriggerTable();
+
   /** Merge on all DataNodes */
   TSStatus merge();
 
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 37d223c5e1..b6fd8bbbb9 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
@@ -24,10 +24,14 @@ import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathDeserializeUtil;
 import org.apache.iotdb.commons.trigger.TriggerInformation;
+import org.apache.iotdb.confignode.consensus.request.read.GetTriggerTablePlan;
+import org.apache.iotdb.confignode.consensus.response.TriggerTableResp;
 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.TGetTriggerTableResp;
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
+import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
 import org.apache.iotdb.trigger.api.enums.TriggerType;
 import org.apache.iotdb.tsfile.utils.Binary;
@@ -35,6 +39,8 @@ import org.apache.iotdb.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+
 public class TriggerManager {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TriggerManager.class);
 
@@ -75,4 +81,16 @@ public class TriggerManager {
     // TODO
     return null;
   }
+
+  public TGetTriggerTableResp getTriggerTable() {
+    try {
+      return ((TriggerTableResp)
+              configManager.getConsensusManager().read(new 
GetTriggerTablePlan()).getDataset())
+          .convertToThriftResponse();
+    } catch (IOException e) {
+      e.printStackTrace();
+      return new TGetTriggerTableResp(
+          new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode()), 
null);
+    }
+  }
 }
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
index 9e9163de2a..f4ebd3b46a 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
@@ -702,7 +702,7 @@ public class NodeManager {
 
     LOGGER.info(
         "get the lowest load DataNode, NodeID: [{}], LoadScore: [{}]", result, 
lowestLoadScore);
-    return 
configManager.getNodeManager().getRegisteredDataNodeLocations().get(result);
+    return 
configManager.getNodeManager().getRegisteredDataNodeLocations().get(result.get());
   }
 
   public boolean isNodeRemoving(int dataNodeId) {
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 e30364410d..b0ff75631f 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
@@ -31,6 +31,7 @@ import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import 
org.apache.iotdb.confignode.consensus.request.write.trigger.AddTriggerInTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.trigger.DeleteTriggerInTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggerStateInTablePlan;
+import org.apache.iotdb.confignode.consensus.response.TriggerTableResp;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.apache.thrift.TException;
@@ -150,4 +151,10 @@ public class TriggerInfo implements SnapshotProcessor {
     triggerTable.setTriggerState(physicalPlan.getTriggerName(), 
physicalPlan.getTriggerState());
     return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
   }
+
+  public TriggerTableResp getTriggerTable() {
+    return new TriggerTableResp(
+        new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()),
+        triggerTable.getAllTriggerInformation());
+  }
 }
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 acffb3a7fa..b465e66b8d 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
@@ -161,6 +161,8 @@ public class ConfigPlanExecutor {
         return clusterSchemaInfo.getPathsSetTemplate((GetPathsSetTemplatePlan) 
req);
       case GetAllTemplateSetInfo:
         return clusterSchemaInfo.getAllTemplateSetInfo();
+      case GetTriggerTable:
+        return triggerInfo.getTriggerTable();
       default:
         throw new UnknownPhysicalPlanTypeException(req.getType());
     }
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 a63ee408c3..c21e8f402e 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
@@ -484,9 +484,7 @@ public class ConfigNodeRPCServiceProcessor implements 
IConfigNodeRPCService.Ifac
   }
 
   public TGetTriggerTableResp getTriggerTable() throws TException {
-    // todo: implementation
-    return new TGetTriggerTableResp(
-        new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()), null);
+    return configManager.getTriggerTable();
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 8d250d1eab..ce94ce21d5 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -30,7 +30,6 @@ import org.apache.iotdb.commons.executable.ExecutableManager;
 import org.apache.iotdb.commons.executable.ExecutableResource;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternTree;
-import org.apache.iotdb.commons.trigger.TriggerTable;
 import org.apache.iotdb.commons.trigger.service.TriggerClassLoader;
 import org.apache.iotdb.commons.trigger.service.TriggerClassLoaderManager;
 import org.apache.iotdb.commons.trigger.service.TriggerExecutableManager;
@@ -407,11 +406,12 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
                 getTriggerTableResp.getStatus().message, 
getTriggerTableResp.getStatus().code));
         return future;
       }
+      // convert triggerTable and buildTsBlock
+      
ShowTriggersTask.buildTsBlock(getTriggerTableResp.getAllTriggerInformation(), 
future);
     } catch (TException | IOException e) {
       future.setException(e);
     }
-    // convert triggerTable and buildTsBlock
-    ShowTriggersTask.buildTsBlock(new TriggerTable(), future);
+
     return future;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTriggersTask.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTriggersTask.java
index 3bc191101c..0a3a5ab5e2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTriggersTask.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTriggersTask.java
@@ -20,7 +20,6 @@
 package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
 
 import org.apache.iotdb.commons.trigger.TriggerInformation;
-import org.apache.iotdb.commons.trigger.TriggerTable;
 import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
 import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
 import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
@@ -37,6 +36,7 @@ import org.apache.iotdb.tsfile.utils.Binary;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -49,14 +49,16 @@ public class ShowTriggersTask implements IConfigTask {
   }
 
   public static void buildTsBlock(
-      TriggerTable triggerTable, SettableFuture<ConfigTaskResult> future) {
+      List<ByteBuffer> allTriggerInformation, SettableFuture<ConfigTaskResult> 
future) {
     List<TSDataType> outputDataTypes =
         ColumnHeaderConstant.showTriggersColumnHeaders.stream()
             .map(ColumnHeader::getColumnType)
             .collect(Collectors.toList());
     TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
-    if (triggerTable != null && !triggerTable.isEmpty()) {
-      for (TriggerInformation triggerInformation : 
triggerTable.getTable().values()) {
+    if (allTriggerInformation != null && !allTriggerInformation.isEmpty()) {
+      for (ByteBuffer triggerInformationByteBuffer : allTriggerInformation) {
+        TriggerInformation triggerInformation =
+            TriggerInformation.deserialize(triggerInformationByteBuffer);
         builder.getTimeColumnBuilder().writeLong(0L);
         builder
             .getColumnBuilder(0)
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift 
b/thrift-confignode/src/main/thrift/confignode.thrift
index 7f034d19b3..b45bb5733a 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -274,7 +274,7 @@ struct TDropTriggerReq {
 // Get trigger table from config node
 struct TGetTriggerTableResp {
   1: required common.TSStatus status
-  2: required binary triggerTable
+  2: required list<binary> allTriggerInformation
 }
 
 // Show cluster

Reply via email to