From 9735bcfb8c9757853cb6986671f87328245def61 Mon Sep 17 00:00:00 2001 From: song <271667068@qq.com> Date: Mon, 21 Jul 2025 14:38:11 +0800 Subject: [PATCH 1/2] [fel] ensure thread release during channel cleanup by triggering completion --- .../modelengine/fel/tool/mcp/server/McpServerController.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java b/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java index e2b1d5c5..fd97f5e7 100644 --- a/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java +++ b/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java @@ -99,7 +99,10 @@ public McpServerController(@Fit(alias = "json") ObjectSerializer serializer, Mcp return; } toRemoved.forEach(this.responses::remove); - toRemoved.forEach(this.emitters::remove); + for (String s : toRemoved) { + Emitter removed = this.emitters.remove(s); + removed.complete(); + } log.info("Channels are inactive, remove emitters and responses. [sessionIds={}]", toRemoved); }).build()); } From 30b2484201004a51711fd3dc7e4e71391ab88185 Mon Sep 17 00:00:00 2001 From: song <271667068@qq.com> Date: Mon, 21 Jul 2025 16:40:08 +0800 Subject: [PATCH 2/2] [fit] improve the naming. --- .../fel/tool/mcp/server/McpServerController.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java b/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java index fd97f5e7..459a4978 100644 --- a/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java +++ b/framework/fel/java/plugins/tool-mcp-server/src/main/java/modelengine/fel/tool/mcp/server/McpServerController.java @@ -88,22 +88,22 @@ public McpServerController(@Fit(alias = "json") ObjectSerializer serializer, Mcp if (MapUtils.isEmpty(this.responses)) { return; } - List toRemoved = new ArrayList<>(); + List obsoleteSessionIds = new ArrayList<>(); for (Map.Entry entry : this.responses.entrySet()) { if (entry.getValue().isActive()) { continue; } - toRemoved.add(entry.getKey()); + obsoleteSessionIds.add(entry.getKey()); } - if (CollectionUtils.isEmpty(toRemoved)) { + if (CollectionUtils.isEmpty(obsoleteSessionIds)) { return; } - toRemoved.forEach(this.responses::remove); - for (String s : toRemoved) { - Emitter removed = this.emitters.remove(s); + obsoleteSessionIds.forEach(this.responses::remove); + for (String obsoleteSessionId : obsoleteSessionIds) { + Emitter removed = this.emitters.remove(obsoleteSessionId); removed.complete(); } - log.info("Channels are inactive, remove emitters and responses. [sessionIds={}]", toRemoved); + log.info("Channels are inactive, remove emitters and responses. [sessionIds={}]", obsoleteSessionIds); }).build()); }