AOSSIE-Org / AOSSIE-Org/PictoPy

BUG: Resource leak on partial failure in image_util_classify_and_face_detect_images

Aberta
#1,160 4 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
283
Forks
679
Merge médio
7d 2h
PRs com merge (30d)
3

Descrição

### 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

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.