[PR #294] [CLOSED] feat(cleanup): 添加清理功能以防止资源泄漏 #329

Closed
opened 2026-02-27 07:18:58 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/justlovemaki/AIClient-2-API/pull/294
Author: @YaKun9
Created: 1/31/2026
Status: Closed

Base: mainHead: main


📝 Commits (1)

  • c991aad feat(cleanup): 添加清理功能以防止资源泄漏

📊 Changes

5 files changed (+181 additions, -9 deletions)

View changed files

📝 src/auth/codex-oauth.js (+37 -0)
📝 src/auth/kiro-oauth.js (+33 -0)
📝 src/plugins/api-potluck/key-manager.js (+21 -4)
📝 src/providers/provider-pool-manager.js (+56 -3)
📝 src/services/api-server.js (+34 -2)

📄 Description

本次 PR 修复了项目中多处资源泄漏问题,提升服务长期运行的稳定性。
修复内容

  1. Token 刷新定时器泄漏 (api-server.js)
  • 在 gracefulShutdown() 中清理 tokenRefreshInterval 定时器
  1. Provider Pool Manager 缓冲队列定时器泄漏 (provider-pool-manager.js)
  • 新增 cleanup() 方法,清理 bufferFlushTimer 定时器
  • 在服务关闭时调用,防止定时器泄漏
  1. Key Manager 定时器和事件监听器泄漏 (key-manager.js)
  • 修复定时器未清理问题
  • 修复事件监听器累积问题
  1. checkAndRefreshExpiringNodes 逻辑错误 (provider-pool-manager.js)
  • 修复 if(true) 导致的逻辑错误,恢复正确的条件判断
  1. OAuth 回调服务器端口泄漏 (kiro-oauth.js, codex-oauth.js)
  • kiro-oauth.js: 新增 cleanupAllKiroOAuthServers() 清理函数
  • codex-oauth.js: 已有 cleanupAllCodexOAuthServers() 清理函数
  • api-server.js: 在 gracefulShutdown() 中集成调用两个 OAuth 清理函数
    影响范围
  • 服务器优雅关闭时正确释放所有资源
  • 防止端口 1455 (Codex) 和 19876-19880 (Kiro) 泄漏
  • 防止长时间运行后内存泄漏
    测试建议
  1. 启动服务后发送 SIGTERM/SIGINT 信号,验证日志输出清理信息
  2. 多次触发 OAuth 授权流程后关闭服务,验证端口正确释放
  3. 长时间运行后检查内存占用是否稳定

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/justlovemaki/AIClient-2-API/pull/294 **Author:** [@YaKun9](https://github.com/YaKun9) **Created:** 1/31/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (1) - [`c991aad`](https://github.com/justlovemaki/AIClient-2-API/commit/c991aad75cc55701c8464e46ff19d6ec70a38a40) feat(cleanup): 添加清理功能以防止资源泄漏 ### 📊 Changes **5 files changed** (+181 additions, -9 deletions) <details> <summary>View changed files</summary> 📝 `src/auth/codex-oauth.js` (+37 -0) 📝 `src/auth/kiro-oauth.js` (+33 -0) 📝 `src/plugins/api-potluck/key-manager.js` (+21 -4) 📝 `src/providers/provider-pool-manager.js` (+56 -3) 📝 `src/services/api-server.js` (+34 -2) </details> ### 📄 Description 本次 PR 修复了项目中多处资源泄漏问题,提升服务长期运行的稳定性。 修复内容 1. Token 刷新定时器泄漏 (api-server.js) - 在 gracefulShutdown() 中清理 tokenRefreshInterval 定时器 2. Provider Pool Manager 缓冲队列定时器泄漏 (provider-pool-manager.js) - 新增 cleanup() 方法,清理 bufferFlushTimer 定时器 - 在服务关闭时调用,防止定时器泄漏 3. Key Manager 定时器和事件监听器泄漏 (key-manager.js) - 修复定时器未清理问题 - 修复事件监听器累积问题 4. checkAndRefreshExpiringNodes 逻辑错误 (provider-pool-manager.js) - 修复 if(true) 导致的逻辑错误,恢复正确的条件判断 5. OAuth 回调服务器端口泄漏 (kiro-oauth.js, codex-oauth.js) - kiro-oauth.js: 新增 cleanupAllKiroOAuthServers() 清理函数 - codex-oauth.js: 已有 cleanupAllCodexOAuthServers() 清理函数 - api-server.js: 在 gracefulShutdown() 中集成调用两个 OAuth 清理函数 影响范围 - 服务器优雅关闭时正确释放所有资源 - 防止端口 1455 (Codex) 和 19876-19880 (Kiro) 泄漏 - 防止长时间运行后内存泄漏 测试建议 1. 启动服务后发送 SIGTERM/SIGINT 信号,验证日志输出清理信息 2. 多次触发 OAuth 授权流程后关闭服务,验证端口正确释放 3. 长时间运行后检查内存占用是否稳定 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 07:18:58 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/AIClient-2-API-justlovemaki#329
No description provided.