mirror of
https://github.com/layue13/MoonBridge.git
synced 2026-10-25 18:46:18 +00:00
- PluginHost.close() 原本整个方法持有宿主锁,包括等待各插件 onDisable 的最长 10 秒。插件在 onDisable 里关闭自己的命令注册(文档推荐的做法)时,CommandService 的注销要拿同一把锁, 于是一直等到截止时间被放弃:onDisable 后面的清理(线程池、数据库连接池)不会执行,日志里 出现 “onDisable exceeded shutdown deadline”。AetherShard 每次停机都会遇到 - 现在只在 onDisable 之前和之后的步骤持锁,等待插件时不持锁;每个插件的 deactivateAndRemove 仍在锁内。同时调用 close() 的第二个线程等第一个完成后返回,与之前被锁挡住时的效果一致 - PluginHostTest:插件在 onDisable 里关闭命令注册,close() 远早于截止时间返回且 onDisable 执行完;修复前该测试失败 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>