Mise à jour inscriptions parcours lors des changements de groupes #672

Closed
opened 2023-07-05 19:09:00 +02:00 by viennet · 1 comment
Owner

Un point technique important:

change_etud_group_in_partition appelle update_inscriptions_parcours_from_groups qui lance de lourdes requêtes SQL sur les groupes et les inscrioptions au semestre.

Quand on met à jour la composition d'un groupe (eg Affecter automatiquement les étudiants du groupe dans l'éditeur de partition), on a de nombreuses requêtes en //, dans des threads différents, et on a souvent des deadlocks.

Il faudrait soit:

  • différer la mise à jour des inscriptions et l'invalidation des caches semestre (avec une file d'attente qui évite de répéter les opérations, ce qui servirait en d'autres endroits)

  • soit, moins ambitieux, fournir un point d'API pour modifier "en masse' les affectations aux groupes.

Un point technique important: `change_etud_group_in_partition` appelle `update_inscriptions_parcours_from_groups` qui lance de lourdes requêtes SQL sur les groupes et les inscrioptions au semestre. Quand on met à jour la composition d'un groupe (eg *Affecter automatiquement les étudiants du groupe* dans l'éditeur de partition), on a de nombreuses requêtes en //, dans des threads différents, et on a souvent des deadlocks. Il faudrait soit: - différer la mise à jour des inscriptions et l'invalidation des caches semestre (avec une file d'attente qui évite de répéter les opérations, ce qui servirait en d'autres endroits) - soit, moins ambitieux, fournir un point d'API pour modifier "en masse' les affectations aux groupes.
viennet added this to the ScoDoc 9.6 milestone 2023-07-05 19:09:00 +02:00
viennet added the
Dev
bug
enhancement
labels 2023-07-05 19:09:00 +02:00
Author
Owner

Reproduction en 9.6.5:

  • GEA/Scolarite/partition_editor?formsemestre_id=1176
  • affecter les étudiants du groupe 1 au groupe d eParcours GC2F

La passerelle appelle par exemple api/partition/2672/remove_etudiant/{etudid} (-> group_remove_etud) pour chaque étudiant.

Correction: modification de formsemestre.update_inscriptions_parcours_from_groups()pour pouvoir spécifier un étudiant et éviter la mise à jour inutile de toutes les inscriptions.

Implémenté par deff37b9

Reproduction en 9.6.5: - `GEA/Scolarite/partition_editor?formsemestre_id=1176` - affecter les étudiants du groupe 1 au groupe d eParcours `GC2F` La passerelle appelle par exemple `api/partition/2672/remove_etudiant/{etudid}` (-> `group_remove_etud`) *pour chaque étudiant*. Correction: modification de `formsemestre.update_inscriptions_parcours_from_groups()`pour pouvoir spécifier un étudiant et éviter la mise à jour inutile de toutes les inscriptions. Implémenté par deff37b9
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#672
No description provided.