Files
layue13andClaude Opus 5.5 85f56d042c fix: 关闭插件宿主时不再持有宿主锁等待 onDisable
- 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>
2026-10-23 16:47:13 +08:00
..