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/11/08 07:54:29 UTC
[iotdb] branch master updated: [IOTDB-4868] Drop trigger should fail when trigger.OnDrop throws an exception (#7928)
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 bbc910b087 [IOTDB-4868] Drop trigger should fail when trigger.OnDrop throws an exception (#7928)
bbc910b087 is described below
commit bbc910b0870180dcf0c2006a621e2eac6b97fc3b
Author: Liao Lanyu <14...@qq.com>
AuthorDate: Tue Nov 8 15:54:23 2022 +0800
[IOTDB-4868] Drop trigger should fail when trigger.OnDrop throws an exception (#7928)
---
.../main/java/org/apache/iotdb/commons/trigger/TriggerTable.java | 4 ++--
server/src/main/java/org/apache/iotdb/db/service/DataNode.java | 2 +-
.../db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java | 9 ++++++---
.../iotdb/db/trigger/service/TriggerManagementService.java | 8 ++++++--
4 files changed, 15 insertions(+), 8 deletions(-)
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 9962477057..ecc79c3e6d 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
@@ -57,8 +57,8 @@ public class TriggerTable {
return triggerTable.get(triggerName);
}
- public TriggerInformation removeTriggerInformation(String triggerName) {
- return triggerTable.remove(triggerName);
+ public void removeTriggerInformation(String triggerName) {
+ triggerTable.remove(triggerName);
}
public void setTriggerInformation(String triggerName, TriggerInformation triggerInformation) {
diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index 56981ac5ec..7ff9183f0a 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -594,7 +594,7 @@ public class DataNode implements DataNodeMBean {
List<ByteBuffer> jarList = resp.getJarList();
for (int i = 0; i < triggerInformationList.size(); i++) {
TriggerExecutableManager.getInstance()
- .saveToLibDir(jarList.get(i), triggerInformationList.get(i).getJarName());
+ .saveToInstallDir(jarList.get(i), triggerInformationList.get(i).getJarName());
}
} catch (IOException | TException e) {
throw new StartupException(e);
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 4f5269e211..ecade45ea8 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -1341,7 +1341,10 @@ public class DataNodeInternalRPCServiceImpl implements IDataNodeRPCService.Iface
try {
TriggerManagementService.getInstance().inactiveTrigger(req.triggerName);
} catch (Exception e) {
- LOGGER.error("Error occurred during ");
+ LOGGER.error(
+ "Error occurred when try to inactive trigger instance for trigger: {}. The cause is {}. ",
+ req.triggerName,
+ e);
return new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode())
.setMessage(e.getMessage());
}
@@ -1355,7 +1358,7 @@ public class DataNodeInternalRPCServiceImpl implements IDataNodeRPCService.Iface
TriggerManagementService.getInstance().dropTrigger(req.triggerName, req.needToDeleteJarFile);
} catch (Exception e) {
LOGGER.error(
- "Error occurred during drop trigger instance for trigger: {}. The cause is {}.",
+ "Error occurred when dropping trigger instance for trigger: {}. The cause is {}.",
req.triggerName,
e);
return new TSStatus(TSStatusCode.DROP_TRIGGER_INSTANCE_ERROR.getStatusCode())
@@ -1371,7 +1374,7 @@ public class DataNodeInternalRPCServiceImpl implements IDataNodeRPCService.Iface
.updateLocationOfStatefulTrigger(req.triggerName, req.newLocation);
} catch (Exception e) {
LOGGER.error(
- "Error occurred during update Location for trigger: {}. The cause is {}.",
+ "Error occurred when updating Location for trigger: {}. The cause is {}.",
req.triggerName,
e);
return new TSStatus(TSStatusCode.UPDATE_TRIGGER_LOCATION_ERROR.getStatusCode())
diff --git a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
index 26d4c1cb20..eff5cfc029 100644
--- a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
+++ b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
@@ -115,11 +115,15 @@ public class TriggerManagementService {
public void dropTrigger(String triggerName, boolean needToDeleteJar) throws IOException {
try {
acquireLock();
- TriggerInformation triggerInformation = triggerTable.removeTriggerInformation(triggerName);
- TriggerExecutor executor = executorMap.remove(triggerName);
+ TriggerInformation triggerInformation = triggerTable.getTriggerInformation(triggerName);
+ TriggerExecutor executor = executorMap.get(triggerName);
if (executor != null) {
executor.onDrop();
}
+ // exception could be thrown when executing executor.onDrop()
+ // we delete trigger in map after successfully executing onDrop
+ triggerTable.removeTriggerInformation(triggerName);
+ executorMap.remove(triggerName);
if (triggerInformation == null) {
return;