AOSSIE-Org / AOSSIE-Org/PictoPy
BUG: Resource leak on partial failure in image_util_classify_and_face_detect_images
- 主要语言
- 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 还没有评估数据。