Support #74105
Ne pas insérer de récurrences déjà présentes en base
0%
Description
Le plantage #74001 a été provoqué par une combinaison de plusieurs bugs : un excès d'occurences sur certains événements, une trop grande fréquence d'insertion de ces occurences, et un code d'insertion inefficace.
Le paliatif (passer la colonne en bigint) n'est que cela, un paliatif. Ça fera tenir un certain temps bien sûr, mais cela ne règle pas le problème à la base.
Je suggère donc de réécrire le code qui fait l'insertion des récurrences en base. Ce code est d'ailleurs à l'origine de beaucoup de requêtes extrêmement volumineuses et donc lentes, cela ne peut faire que du bien à l'application et à la base de données.
Le code actuel, Event::create_events_recurrences:
recurrences = [] for event in events: if event.recurrence_end_date: max_datetime = datetime.datetime.combine(event.recurrence_end_date, datetime.time(0, 0)) else: max_datetime = make_naive(now() + datetime.timedelta(days=365)) recurrences.extend( event.get_recurrences(localtime(event.start_datetime), make_aware(max_datetime)) ) Event.objects.bulk_create(recurrences, ignore_conflicts=True)
Il me semble qu'en découpant par événement, et en faisant une exclusion en comparant avec un Event.objects.filter(...).order_by(date), on obtiendrait assez facilement le résultat attendu. Les deux contraintes dans la base sont sur (desk_it, &&tstzrange(start,end)) et (agenda_id, slug), on peut aisément les reprendre côté python.
Révisions associées
Historique
Mis à jour par Robot Gitea il y a environ un an
- Assigné à mis à Lauréline Guérin
Lauréline Guérin (lguerin) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://gitea.entrouvert.org/entrouvert/chrono/pulls/34
- Titre : agendas: rewrite recurrence creation (#74105)
- Modifications : https://gitea.entrouvert.org/entrouvert/chrono/pulls/34/files
Mis à jour par Robot Gitea il y a environ un an
Valentin Deniaud (vdeniaud) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a environ un an
Pierre Ducroquet (pducroquet) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Nouveau à Résolu (à déployer)
Lauréline Guérin (lguerin) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://gitea.entrouvert.org/entrouvert/chrono/pulls/34
- Titre : agendas: rewrite recurrence creation (#74105)
- Modifications : https://gitea.entrouvert.org/entrouvert/chrono/pulls/34/files
Mis à jour par Transition automatique il y a environ un an
- Statut changé de Résolu (à déployer) à Solution déployée
agendas: rewrite recurrence creation (#74105)