Skip to content

BUG: Resource leak on partial failure in image_util_classify_and_face_detect_images #1160

@Yug210705

Description

@Yug210705

Is there an existing issue for this?

  • 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

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions