Skip to content

Calculateur : charger les busy times pour l'ensemble des ranges d'une plage#6211

Open
francois-ferrandis wants to merge 5 commits intoproductionfrom
frf/calculator-optim-global-range
Open

Calculateur : charger les busy times pour l'ensemble des ranges d'une plage#6211
francois-ferrandis wants to merge 5 commits intoproductionfrom
frf/calculator-optim-global-range

Conversation

@francois-ferrandis
Copy link
Collaborator

Actuellement, dans le calculateur de créneaux, nous chargeons, pour chaque plage d'ouverture trouvée, nous chargeons depuis Postgres, pour chacune des occurrences de la plage de la semaine courante :

  • les RDV sur ce range
  • les absences sur ce range
  • les événements caldav sur ce range

Cela signifie que, pour une plage ayant lieu chaque jour de la semaine, nous avons 5 occurrences (lun-mar-mer-jeu-ven), et donc nous faisons 5 fois les 3 appels ci-dessus. Si cette plage est découpé en matin / après-midi, on double encore le nombre d'itérations !

Cette PR propose plutôt de ne faire les 3 appels ci dessus qu'une seule fois, sur un seul range global qui couvre toutes les occurrences (dans l'exemple ci dessus, ce range global va du lundi matin au vendredi soir).

Cela va donc avoir pour effet de charger parfois des éléments qui sont en dehors des ranges, mais de réduire parfois considérablement le nombre de requêtes en base. Nous faisons le pari que cela nous fera globalement gagner en performance car la majorité des busytimes sont bel et bien contenus dans les ranges.

Ce changement est proposé dans un contexte dans lequel nous avons des soucis d’exhaustion de connection dans la pool, et nous suspectons très fortement l'usage de load_async dans le calculator d'en être la cause. C'est donc la suite de #6095, #4725 et #4695.

@francois-ferrandis francois-ferrandis removed the request for review from victormours March 3, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🔖 Ready

Development

Successfully merging this pull request may close these issues.

1 participant