Permettre plusieurs recherches simultanées

#4

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.

pbordescnil changed pull request status to open

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 à cancelled en 0,89 s après la demande d’annulation ;
  • avec deux workers occupés, un troisième job observé dans l’état queued a é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.

Ready to merge
This branch is ready to get merged automatically.

Sign up or log in to comment