AOSSIE-Org / AOSSIE-Org/PictoPy

BUG: Resource leak on partial failure in image_util_classify_and_face_detect_images

未关闭
#1,160 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
283
派生
679
平均合并
7 天 2 小时
30 天内合并 PR
3

描述

### Is there an existing issue for this?

- [x] I have searched the existing issues

### What happened?

ObjectClassifier and FaceDetector are initialized outside the try...finally block in
backend/app/utils/images.py. This can lead to resource leaks when initialization or cleanup fails.

**Details**

**Current pattern:**
```
object_classifier = ObjectClassifier()
face_detector = FaceDetector()
try:
...
finally:
object_classifier.close()
face_detector.close()

```

**Problems:**

If FaceDetector() raises during init, finally is never executed → ObjectClassifier is not closed.
If object_classifier.close() raises, face_detector.close() is skipped.

**Impact:**

- ONNX session / memory leaks
- Potential file handle leaks
- Increased risk of backend instability during AI Tagging

**Proposed Fix**

Refactor to:
- Initialize both objects as None
- Move initialization inside try (or use nested try...finally)
- Guard each close() call (e.g. if obj is not None)
- Optionally isolate close() calls to avoid cascading failures

**Testing**
Manual: verify AI Tagging still works; simulate model load failure
Automated (optional): mock init failure and assert close() is called

**Request:**
Happy to submit a PR with the fix + test if this approach is acceptable.

### Record

- [x] I agree to follow this project's Code of Conduct

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。