Skip to content

📦 Lazy init for Mongo and Chroma clients - #1

Merged
GiorgosPanagopoulos merged 1 commit into
mainfrom
refactor/lazy-data-clients
Jul 27, 2026
Merged

📦 Lazy init for Mongo and Chroma clients#1
GiorgosPanagopoulos merged 1 commit into
mainfrom
refactor/lazy-data-clients

Conversation

@GiorgosPanagopoulos

Copy link
Copy Markdown
Owner

Πρόβλημα

Τα Mongo και Chroma clients δημιουργούνταν σε module import time. Κάθε
import routers.chat άνοιγε δικτυακή σύνδεση, οπότε τα tests και κάθε
εργαλείο που απλώς κάνει import το app απαιτούσαν live υποδομή.

Αλλαγές

  • backend/utils/lazy.py (νέο): το _lazy_proxy μεταφέρθηκε verbatim από
    το llm/clients.py και προστέθηκε _is_initialized(proxy), που διαβάζει
    το cache attribute _obj μέσω object.__getattribute__ χωρίς να
    πυροδοτεί το initialization.
  • llm/clients.py: πλέον μόνο import από το νέο module.
  • db.py: _create_mongo_client / _get_db πίσω από proxy.
  • rag/vectorstore.py: _create_chroma_client / _create_chroma_collection
    πίσω από proxy.
  • main.py: το close στο lifespan τρέχει μόνο αν το client έχει όντως
    αρχικοποιηθεί.
  • tests/conftest.py: ANONYMIZED_TELEMETRY=False πριν από κάθε import.

Επαλήθευση

  • import routers.chat χωρίς δίκτυο: OK.
  • test_login_does_not_create_new_mongo_client: PASSED (local mongo:7 με
    MONGODB_URI override).
  • test_auth.py: 10/10 PASSED.

Follow-up

Τα 11 tests σε test_auth.py / test_rbac.py που απαιτούν live Mongo
θέλουν mocked fixture - ξεχωριστό PR.

@GiorgosPanagopoulos
GiorgosPanagopoulos merged commit 6698d0f into main Jul 27, 2026
2 checks passed
@GiorgosPanagopoulos
GiorgosPanagopoulos deleted the refactor/lazy-data-clients branch July 27, 2026 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant