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);