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