From 1507e758cdaca9a8ceccae39016d32438e514e24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Wed, 11 Feb 2026 10:24:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=9E=E8=B0=83=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/impl/machine/command/TransactionExecutor.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/ruoyi/device/domain/impl/machine/command/TransactionExecutor.java b/src/main/java/com/ruoyi/device/domain/impl/machine/command/TransactionExecutor.java index d314fde..7b56ffe 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/machine/command/TransactionExecutor.java +++ b/src/main/java/com/ruoyi/device/domain/impl/machine/command/TransactionExecutor.java @@ -204,6 +204,15 @@ public class TransactionExecutor { } }, commandExecutor).thenCompose(remoteCallSuccess -> { if (!remoteCallSuccess) { + // 命令发送失败,取消已注册的回调(避免资源泄漏) + if (finalMethodFuture != null) { + log.warn("命令发送失败,取消方法回调"); + finalMethodFuture.cancel(true); + } + if (finalStateFuture != null) { + log.warn("命令发送失败,取消状态回调"); + finalStateFuture.cancel(true); + } InstructionResult result = InstructionResult.failure("远程调用失败"); instruction.onComplete(context, result); return CompletableFuture.completedFuture(result);