Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Bug] 0.21.0 hangs for 10 minutes on cancel in the Chat view

未关闭
#405 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清
技术栈
java
领域
desktop

调研方向

使用所述的 Eclipse 和 plugin 版本重现 Chat view 的取消流程,然后从 ChatView.onCancel 和 LanguageServerWrapper 中的取消路径开始。使用提供的线程转储和相关日志输出来检查 StreamMessageConsumer.consume 处的锁竞争。完成的标准是:取消请求不再使 Eclipse UI 阻塞数分钟,并且 allowlist 错误得到处理,同时不会让模型页面保持空白。

由索引模型根据 Issue 内容生成。

描述

bug

Environment

  • OS: RHEL 9.6
  • Eclipse Version: 4.38
  • Plugin Version: 0.21.0

Describe the bug
Open Chat
Open Java file
Ask /explain with the Claude Opus 4.8 medium model
Nothing happens for some time, so try to "cancel".
UI hangs for ~10 minutes (no CPU load).

After the hang three log entries are logged,

org.eclipse.lsp4e
Info
Fri Aug 07 11:31:30 CEST 2026
[LS:GitHub Copilot Language Server][Info]	[AuthManager] resolveSession: persisted store resolved a session

followed by an error

com.microsoft.copilot.eclipse
Error
Fri Aug 07 11:31:31 CEST 2026
[Error] org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields

java.util.concurrent.CompletionException: org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields
	at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323)
	at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:412)
	at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:421)
	at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1118)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleResponse(RemoteEndpoint.java:214)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:198)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$3(LanguageServerWrapper.java:458)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:189)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:97)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:97)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Invalid allowlist format: registry entries missing required fields
	... 11 more

Note: the model management page is empty (not sure it is related):

Image

and it poplates only after the hang is resolved.

The UI itself hangs in this stack:

"main" #3 [161792] prio=6 os_prio=0 cpu=18177.04ms elapsed=211.23s tid=0x00007f5b2802ebf0 nid=161792 waiting for monitor entry  [0x00007f5b2e9fc000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.lsp4j.jsonrpc.json.StreamMessageConsumer.consume(StreamMessageConsumer.java:67)
        - waiting to lock <0x000000040cf71510> (a java.lang.Object)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$3(LanguageServerWrapper.java:458)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680ccc00.consume(Unknown Source)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.notify(RemoteEndpoint.java:135)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.sendCancelNotification(RemoteEndpoint.java:185)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.lambda$request$1(RemoteEndpoint.java:157)
        at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint$$Lambda/0x0000000068105000.run(Unknown Source)
        at org.eclipse.lsp4j.jsonrpc.JsonRpcRequestFuture.cancelRequest(JsonRpcRequestFuture.java:126)
        at org.eclipse.lsp4j.jsonrpc.JsonRpcRequestFuture.cancel(JsonRpcRequestFuture.java:99)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$24(LanguageServerWrapper.java:1077)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680cc400.apply(Unknown Source)
        at java.util.concurrent.CompletableFuture.uniExceptionally(java.base@25/CompletableFuture.java:1011)
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(java.base@25/CompletableFuture.java:995)
        at java.util.concurrent.CompletableFuture.postComplete(java.base@25/CompletableFuture.java:531)
        at java.util.concurrent.CompletableFuture.cancel(java.base@25/CompletableFuture.java:2554)
        at org.eclipse.lsp4e.LanguageServerWrapper.lambda$22(LanguageServerWrapper.java:1034)
        at org.eclipse.lsp4e.LanguageServerWrapper$$Lambda/0x00000000680cc800.apply(Unknown Source)
        at java.util.concurrent.CompletableFuture.uniExceptionally(java.base@25/CompletableFuture.java:1011)
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(java.base@25/CompletableFuture.java:995)
        at java.util.concurrent.CompletableFuture.postComplete(java.base@25/CompletableFuture.java:531)
        at java.util.concurrent.CompletableFuture.cancel(java.base@25/CompletableFuture.java:2554)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView.lambda$35(ChatView.java:1413)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView$$Lambda/0x0000000068dbf000.accept(Unknown Source)
        at java.lang.Iterable.forEach(java.base@25/Iterable.java:75)
        at com.microsoft.copilot.eclipse.ui.chat.ChatView.onCancel(ChatView.java:1412)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar.notifyCancel(ActionBar.java:825)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar.handleCancelMessage(ActionBar.java:818)
        at com.microsoft.copilot.eclipse.ui.chat.ActionBar$4.widgetSelected(ActionBar.java:473)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:290)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5109)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4546)

Full jstack:

thread_dump.txt

主要语言
Java
星标
128
派生
66
平均合并
1 天 16 小时
30 天内合并 PR
11

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/copilot-for-eclipse 的其他 Issue

查看 microsoft/copilot-for-eclipse 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。