[Bug][macOS] 打开已有运行配置的项目时同步探测 JDK/Maven 阻塞主线程
Los mantenedores suelen responder en 1 día
@defia ya está trabajando en esto.
Desde el 7/10/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Platform / 平台
macOS
Area / 模块
Run / 运行
Lithe version / Lithe 版本
0.5.15(52);独立诊断在 preview 06dff03db3582798fcf9ab38bb8edacc31270ea8 上进行,不包含本轮项目树导航或搜索菜单修改。
Priority / 优先级
P1:选择项目进入 IDE 后短时间无法操作界面,随后恢复。
OS and architecture / 操作系统与架构
macOS 27.0.1,Apple Silicon / arm64。本机存在多个 JDK 安装。
Environment / 环境信息
原始 Java 项目约 213 MiB、385 个受版本控制文件,已有保存的运行配置。
最小复现不需要源文件、pom.xml 或 Git 仓库,仅需一个有效的 .lithe/run/generated.json;因此项目大小不是这条阻塞路径的必要条件。
Steps to reproduce / 复现步骤
- 创建空目录,在
.lithe/run/generated.json写入以下有效示例配置(仓库 single-module fixture 的 generated 部分):
{"version":1,"configurations":[{"id":"spring:com.example.App","name":"App","type":"spring-boot.maven","module":".","mainClass":"com.example.App","toolchains":{"java":"project-jdk","maven":"project-maven"},"workingDirectory":".","jvmArguments":[],"programArguments":[],"mavenProfiles":[]}]}
- 在有多个 JDK 的 macOS 上打开该项目。
- 在恢复运行配置、自动识别工具链期间操作界面;或通过真实 AppModel 打开流程在后台每 10ms 向主队列提交回调,测量 5 秒窗口内的最大等待时间。
- 对照:仅移除 generated.json,打开同一空目录;不卸载或修改本机 JDK/Maven。
Expected behavior / 预期行为
工具链探测在后台进行,并保留取消、超时及工作区过期结果检查。界面持续响应;工具链选择及最终运行配置结果不因性能修复改变。
Actual behavior / 实际行为
恢复保存的运行配置时串行阻塞主线程,导致界面在该阶段无法响应。
Logs or diagnostic output / 日志或诊断输出
实测(独立偏好设置、真实生产 AppModel/服务容器;没有创建项目树视图):
| 场景 | 主队列最大等待 |
|---|---|
| 原始项目,preview 基线首次测量 | 2330ms |
| 最小项目,只有保存的运行配置 | 946ms |
| 最小项目,增加线程/耗时诊断日志 | 1914ms |
| 同一最小项目,仅移除运行配置 | 20ms |
| 原始项目再次测量 | 1385ms |
最小项目的定向诊断日志:22 次 java -version、1 次 java_home -V、1 次 mvn -version,24 次均为 Thread.isMainThread == true。进程探测累计 1899ms,对应同次主队列等待 1914ms。移除配置后主线程探测次数为 0。
主线程 sample 调用链与源码对应:
WorkspaceSessionCoordinator.startWorkspaceRebuild → AppModel.loadProjectServices → ProjectDevelopmentFeatureModel.loadProject → RunFeatureModel.loadProject → RunService.loadProject → resolveWithServiceToolchains → toolchainCandidates → ProjectRuntimeService.runConfigurationToolchainCandidates → MacRuntimeDiscovery.commandOutput → MacProcessRunner.run → Thread.sleep。
RunService 和 RunRuntimePort 都在 MainActor(主线程执行器)上。虽然外层 loadProject 是 async,内部工具链候选解析仍调用同步接口;MacProcessRunner 在调用线程循环等待子进程结束。JDK 自动发现逐个启动版本探测进程,配置解析还会探测选中 JDK/Maven,累积形成可观察停顿。
源码定位:
以上确认了一条启动主线程阻塞路径;尚未声称覆盖所有项目打开/渲染卡顿。诊断期间未修改工具链选择规则,也未提交性能修复代码。
Screenshots or recordings / 截图或录屏
暂无录屏;已用主队列延迟、最小配置对照和主线程采样复现。公开报告只保留脱敏命令名及汇总数据,未上传私人项目配置、源码或完整环境。
Checklist / 提交前检查
- 已检索 412 个开放及历史 issue,并额外检索主线程、JDK/Maven 探测、运行配置相关描述。
- 已移除敏感信息和私人项目路径。
相似 issue 核对
- #521 是 Git 状态失败导致卡顿;本最小复现没有 Git 仓库。
- #338 是大文件树渲染;本复现没有树视图,只有一个运行配置文件。
- #814 是工具链生效值展示,明确要求表单探测异步;本问题位于打开项目恢复运行配置的另一条调用链。
- #815 是 JDK 版本选择正确性,修复本问题应保留其选择规则。
- #591 是 JDTLS/Maven 项目导入超时,最小复现没有 Java 源文件,也不依赖 JDTLS 导入。
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.8k
- Forks
- 151
- Merge medio
- 8 h 24 min
- PR fusionados (30 d)
- 345
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de 1lck/Lithe-IDEA
-
[Feature] 通知栏合并重复消息并显示次数Abiertoarea:ui enhancement issue-form:feature platform:cross-platform review: high
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
1lck/Lithe-IDEA#1092 ·
Los mantenedores suelen responder en 1 día
-
[Feature][macOS] 项目文件树右键菜单提供 Find in Files / Replace in FilesPosiblemente ocupada @defia la tomó hoy. Abiertoarea:search claimed enhancement P2 platform:macos review: high
1lck/Lithe-IDEA#1096 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug][macOS] 点击项目树后方向键仍操作编辑器,目录名称双击不能展开Posiblemente ocupada @defia la tomó hoy. Abiertoarea:project bug claimed P1 platform:macos review: high
1lck/Lithe-IDEA#1095 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Feature] 希望可以修改编程字体Posiblemente ocupada @Mucheen la tomó hoy. Abiertoarea:editor enhancement issue-form:feature P0 platform:macos review: low
1lck/Lithe-IDEA#1090 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Feature] 添加对 Agent 更多状态参数的显示以提供更好的控制效果Posiblemente ocupada @xiaoyumuxi la tomó hace 1 día. Abiertoarea:ai enhancement issue-form:feature P0 platform:macos review: high
1lck/Lithe-IDEA#1089 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de 1lck/Lithe-IDEA
Issues similares
-
bug DUP Reservations
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
bcgov/reserve-rec-public#952 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
daufderheide/racecoordinator_ai#948 ·
Los mantenedores suelen responder en 1 día
-
Bug pulumi/pulumi
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug priority:high
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
api bug claude
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
diegosouzapw/OmniRoute#15764 ·
Los mantenedores suelen responder en 2 días