修复:删除算法绑定后边缘端未停止对应算法推理
根本原因:config_sync.py 的 _cleanup_stale_records() 方法接收了 incoming_bind_ids 参数但从未使用,导致当 ROI 仍存在但其中某个 算法绑定被删除时,孤立的绑定记录继续留在 SQLite 中,推理循环 仍然从 SQLite 读取到已删除的绑定并继续生成告警。 修复内容: 1. config/database.py: 添加 get_all_bind_ids() 方法 2. core/config_sync.py: 在 _cleanup_stale_records() 中补全 使用 incoming_bind_ids 清理孤立绑定的逻辑 3. algorithms.py: 在 reload_all_algorithms() 中添加清理内存中 孤立算法实例的逻辑,防止内存泄漏
This commit is contained in:
@@ -640,6 +640,15 @@ class ConfigSyncManager:
|
||||
removed += 1 + bind_count
|
||||
logger.info(f"清理旧 ROI: {old_roi_id} (含 {bind_count} 条算法绑定)")
|
||||
|
||||
# 清理孤立的算法绑定(ROI 仍存在但绑定已被删除的情况)
|
||||
if incoming_bind_ids:
|
||||
existing_bind_ids = self._db_manager.get_all_bind_ids()
|
||||
for old_bind_id in existing_bind_ids:
|
||||
if old_bind_id not in incoming_bind_ids:
|
||||
self._db_manager.delete_roi_algo_bind(old_bind_id)
|
||||
removed += 1
|
||||
logger.info(f"清理孤立算法绑定: {old_bind_id}")
|
||||
|
||||
if removed > 0:
|
||||
logger.info(f"旧数据清理完成: 共删除 {removed} 条过期记录")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user