From fdc6c881c1daecd128faa94664c5bdd5b22377f6 Mon Sep 17 00:00:00 2001 From: JishLong Date: Mon, 5 Jun 2023 13:59:02 -0400 Subject: [PATCH] 0003476: When a node is unregistered cancel all jobs / threads that are actively doing work for that node --- .../org/jumpmind/symmetric/service/impl/NodeService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java index 1ebae12521..55872fce52 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java @@ -51,6 +51,7 @@ import org.jumpmind.symmetric.model.NodeHost; import org.jumpmind.symmetric.model.NodeSecurity; import org.jumpmind.symmetric.model.NodeStatus; +import org.jumpmind.symmetric.model.ProcessInfo; import org.jumpmind.symmetric.security.INodePasswordFilter; import org.jumpmind.symmetric.service.FilterCriterion; import org.jumpmind.symmetric.service.FilterCriterion.FilterOption; @@ -208,6 +209,13 @@ public void updateNodeHostForCurrentNode() { } public void deleteNode(String nodeId, boolean syncChange) { + log.info("Unregistering node {} and removing it from database", nodeId); + for (ProcessInfo info : engine.getStatisticManager().getProcessInfos()) { + if (info.getTargetNodeId() != null && info.getTargetNodeId().equals(nodeId)) { + log.info("Sending interrupt to " + info.getKey() + ",batchId=" + info.getCurrentBatchId()); + info.getThread().interrupt(); + } + } ISqlTransaction transaction = null; try { transaction = sqlTemplate.startSqlTransaction();