Skip to content

[Bug] CLI 命令异常时资源未清理(result_callback 不触发) #222

Description

缺陷描述

cli/main.py 通过 @cli.result_callback() 注册 cleanup() 来调用 manager.shutdown()。Click 的 result_callback 仅在命令正常返回后触发;当命令抛出 ClickException/Abort/其它异常时不会执行,manager.shutdown() 被跳过。

影响

  • CLI 异常退出时数据库连接(SQLAlchemy engine / aiosqlite)未释放,造成连接泄漏
  • 重复运行 CLI 时资源累积

文件位置

cli/openjiuwen_runtime/cli/main.py 第 111-116 行(cleanup)、第 188 行附近

修复建议

  • 将 manager.shutdown() 提取为幂等函数,并通过 atexit.register 兜底;
  • result_callback 也改为调用该幂等函数,避免重复关闭。

验证

SQLAlchemyHandler.disconnect() 通过 if self.engine: await self.engine.dispose() 实现,重复调用安全。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions