Spaces:
Running
Permettre plusieurs recherches simultanées
Résumé
Cette pull request hérite de optimize-bfs-depth et permet à plusieurs utilisateurs de lancer des recherches en même temps.
Modifications
- passage de 1 à 2 workers de recherche simultanés par défaut ;
- configuration possible avec
SEARCH_MAX_WORKERS; - conservation d’une file d’attente bornée pour les requêtes supplémentaires ;
- conservation du verrou autour de la création initiale des projections GDS ;
- isolation existante des identifiants, progressions et résultats de chaque recherche.
Validation
- vérification de l’ascendance depuis
optimize-bfs-depth; - validation syntaxique Python ;
- test prévu avec deux recherches réelles lancées simultanément sur le Space de test.
Test d’intégration effectué sur genmod-faster
Après préparation des projections GDS, deux recherches mistralai/Mistral-7B-v0.1 à profondeur 1 ont été envoyées simultanément.
Les deux jobs ont été observés en calcul au même moment dans les étapes building_nodes, building_relationships et building_highlights. Ils se sont tous les deux terminés avec le statut completed.
Conclusion : les recherches sont réellement exécutées en parallèle par deux workers ; elles ne sont plus sérialisées par l’exécuteur applicatif.
La branche est déployée et le test de concurrence à deux recherches est concluant.
Validation de l’annulation
Tests effectués sur genmod-faster au commit 7ae57ee :
- une recherche normale termine avec
completed; - une recherche active à profondeur 5 est passée de
building_nodesàcancelleden 0,89 s après la demande d’annulation ; - avec deux workers occupés, un troisième job observé dans l’état
queueda été annulé immédiatement ; - les deux recherches actives du test ont ensuite été annulées proprement ;
- états finaux des trois jobs :
cancelled,cancelled,cancelled.
Les transactions Neo4j sont ciblées par la métadonnée search_job_id, ce qui évite d’interrompre les recherches des autres utilisateurs.