Skip to content

fix(lsp): allow cold managed runtimes to finish initialization - #29

Merged
1lck merged 1 commit into
mainfrom
codex/java-startup-budget
Nov 13, 2026
Merged

1lck merged 1 commit into
mainfrom
codex/java-startup-budget

Conversation

@1lck

@1lck 1lck commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

关联 Issue / Linked issue

PR 类型 / Type

  • fix:缺陷修复

改动说明 / What changes

背景 / Why

Windows 原生验证中,真实打包 JDT 的 initialize 需要 15.413 秒,超过 Core 默认 10 秒,进程会在能够就绪前被终止。

改动 / Changes

  • 通用 managed runtime 默认 initialize 期限改为 60 秒;所有角色使用同一规则,没有 Java 分支。调用方显式期限仍优先。
  • 用注入时钟验证 15 秒仍在初始化、61 秒超时并回收;保留取消、请求和关闭的原有语义。
  • 同步 rust/contracts/rust-core-api.md 的默认值。

不在本 PR 范围内 / Out of scope

Java/Gradle 插件、Viva 工具入口接线、JDT 项目兼容性和资源调优另行提交。不是延长每次请求或关闭的期限。

类型专属:fix

复现与根因

  • Windows 11 原生 x64 工具(ARM 虚拟机仿真)启动打包语言服务器:10 秒被终止;直接协议探测在 15.413 秒初始化、15.473 秒 ServiceReady。
  • 默认值来自 8b45322 的 engine 实现,后续迁移保留至 0be1d34。冷运行时初始化的预算过短。
  • 影响:所有使用默认期限的 managed role;共享规则覆盖两平台,Windows 已运行时钟回归。

检查项

  • 先复现真实超时并写回归;修复前 15 秒处已失败,修复后 15/61 秒状态及回收断言通过,无真实一分钟等待
  • [N/A] 无法自动化时手验:本项可自动化
  • 检查共享 engine 配置、桌面消费者及显式期限调用点
  • 规则共用,另一平台无重复实现
  • 无无关重构;客户端记录同轮决策笔记
  • 改动约束写入正式 Rust API 文档;客户端 Note 在配套 PR

范围检查 / Scope checks

功能矩阵 / Feature matrix

N/A:Core 仓库不持有客户端矩阵;配套 Viva PR 更新实际能力及待验收边界。

统一日志系统 / Structured logging

N/A:不新增事件或失败类别,沿用 managed runtime 的初始化失败与进程回收事件。

界面文案 / i18n

N/A:无界面文字。

逻辑归属 / Logic placement

  • 默认期限与生命周期规则在 Core;不按语言/工具名分支。

性能与内存 / Performance and memory

  • 正常就绪不增加延时;仅扩大冷启动允许窗口,不新增线程、轮询、缓存或重试。取消与超时仍回收进程。

设置 / Settings

N/A:无设置项。

插件契约 / Plugin contract

N/A:没有插件协议、能力版本、宿主方法、参数或 SDK 改动;只同步既有 Rust API 默认值说明。

发行包与资源 / Bundle and resources

N/A:无资源路径、下载或发行内容写入。

无用代码与重构 / Dead code and refactoring

N/A:本改动没有产生无用代码,未发现本范围的新重构项。

验证 / Verification

命令或操作 平台 结果
verify-rust-core-comments.sh macOS 通过
node shared/plugins/scripts/verify-docs.mjs macOS 通过
engine 逐项计时 macOS 126 项通过
cargo test -p lithe-core(完整受影响 crate) macOS 通过
新增注入时钟回归 Windows 通过,0.05 秒
配套 Viva + 真实插件 macOS / Windows Maven、Gradle、运行与断点链路通过;客户端 PR 提供范围与报告

未能执行的检查和原因: 原生窗口与签名/安装器不在这个默认值修复的范围;不以组件测试替代这些验收。

提交前确认 / Final checks

  • 独立 Core 仓库从最新 main 创建;目标 main
  • Draft 提交,本地验证后再 ready;不发布 tag 或 Release
  • 不含构建产物、个人路径或凭据
  • 任务拥有的测试进程已结束,Windows 虚拟机已关闭

@1lck
1lck marked this pull request as ready for review November 13, 2026 22:31
@1lck
1lck merged commit c0201c1 into main Nov 13, 2026
5 checks passed
xiaoyumuxi added a commit that referenced this pull request Nov 13, 2026
#29 修改的 rust/crates/core/src/lsp/interface/engine.rs 在本分支已搬进
lithe-lsp-engine。默认初始化超时 60000 毫秒改在 lsp-engine/src/lib.rs,
新测试 default_initialize_budget_survives_cold_start_and_still_expires
放进 lsp-engine/src/tests.rs,内容与 #29 一致。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant