Repository navigation
dsh-version-update 1.4.4
一个补丁版:修掉两处「说法与事实不符」的地方,并把类型检查的门禁补齐。
修复
- 被拒绝的恢复不再把责任推给一个不存在的宿主。 两处锁拒绝文案都把持有者说成「另一个宿主」,而持有者可能就是本进程自己:硬超时把任务判成终态(于是面板里「安装进行中」的守卫不再触发),却刻意把机器级锁留到被杀死的 npm 真正退出为止;
dispose()之后留下的孤儿也是这样持锁的。在这个窗口里被拒绝的恢复或安装,会告诉用户去找一个并不存在的第二个宿主。现在两种情况分开表述,且都保留面板所依据的措辞。 - 失败后修复的定时器不再拖住正在退出的宿主。 它是插件里唯一没有
unref()的定时器;树被占用时它会重新 arm,所以最坏不是一次延迟而是整个重试预算——约 24 秒。它推迟的只是尽力而为的维护,下一次启动的扫描会补上。现在插件里每一个定时器都unref()了。
变更
- 全部宿主模块重新回到类型检查之下。
opevents、preflight、restart-log、snapshot-inventory、updatelock这五个模块曾漂移出tsconfig.json的include,而它们仍带着只有这份配置才会变成约束的 JSDoc——也就是说没人在检查它们:在其中故意植入一个类型错误,加入清单后报 6 条诊断,加入之前一条都不报。这份数组就是门禁,新的lib/*.js一存在就该登记。 - 移除
lib/relaunch.js里一个吞掉了重启日志辅助函数 JSDoc 的游离注释开头。纯注释改动。
测试
发版门禁:263 用例通过,tsc --checkJs 干净。已发布 tarball 上的 6 条行为断言全部通过——本机自己 vs 另一个宿主的锁文案两支、修复定时器不持有事件循环,以及 1.4.3 两条不变量的回归(退休目录年龄、锁的原子发布)。
完整对比:v1.4.3...v1.4.4
发版之后 main 又补了一条针对本次 unref 的回归用例(process.getActiveResourcesInfo() 只列保持事件循环存活的资源,因此可以确定性断言修复定时器是 unref 的)。该 tag 上的套件为 263 例,main 现为 264。