Projet

Général

Profil

Bug #63387

InternalError: tuple concurrently updated

Ajouté par Sentry Io il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
31 mars 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/55052/

InternalError: tuple concurrently updated

(15 additional frame(s) were not displayed)
...
  File "wcs/formdef.py", line 483, in store
    self.update_storage()
  File "wcs/formdef.py", line 492, in update_storage
    actions = sql.do_formdef_tables(self, rebuild_views=True, rebuild_global_views=True)
  File "wcs/sql.py", line 616, in f
    return func(*args, **kwargs)
  File "wcs/sql.py", line 805, in do_formdef_tables
    recreate_trigger(formdef, cur, conn)
  File "wcs/sql.py", line 938, in recreate_trigger
    endpoint_status=endpoint_status_filter,

Fichiers

Révisions associées

Révision f68b91dd (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

sql: simplify wcs_all_forms clean on formdef removal (#63387)

Historique

#1

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Projet changé de Suivi des traces à w.c.s.
#2

Mis à jour par Lauréline Guérin il y a environ 2 ans

quelque chose à corriger dans la gestion des triggers qui gèrent wcs_all_forms ?

#4

Mis à jour par Lauréline Guérin il y a environ 2 ans

2022-03-30 10:23:53.396 CEST [32561] wcs@wcs_demarches_essonne_test_entrouvert_org LOG:  statement: CREATE INDEX IF NOT EXISTS wcs_all_forms_user_id ON wcs_all_forms (user_id)
2022-03-30 10:23:53.396 CEST [32561] wcs@wcs_demarches_essonne_test_entrouvert_org LOG:  statement: CREATE INDEX IF NOT EXISTS wcs_all_forms_status ON wcs_all_forms (status)
2022-03-30 10:23:53.396 CEST [32561] wcs@wcs_demarches_essonne_test_entrouvert_org LOG:  statement: CREATE INDEX IF NOT EXISTS wcs_all_forms_concerned_roles_array ON wcs_all_forms USING gin (concerned_roles_array)
2022-03-30 10:23:53.397 CEST [32561] wcs@wcs_demarches_essonne_test_entrouvert_org LOG:  statement: CREATE INDEX IF NOT EXISTS wcs_all_forms_actions_roles_array ON wcs_all_forms USING gin (actions_roles_array)

qui passe en même temps

dans wcs/formdef.py:

    @classmethod
    def remove_object(cls, id):
        super().remove_object(id)
        if get_publisher().is_using_postgresql():
            # recreate global views so they don't reference formdata from
            # deleted formefs
            from . import sql

            conn, cur = sql.get_connection_and_cursor()
            sql.do_global_views(conn, cur)
            conn.commit()
            cur.close()

(do_global_views refait les triggers)
à simplifier ?

#5

Mis à jour par Lauréline Guérin il y a environ 2 ans

Pour éviter de rebuilder les triggers à la suppression d'un formdef (ou d'un cardef ?); juste suppression des données de la table globale

#6

Mis à jour par Pierre Ducroquet il y a environ 2 ans

Comme discuté avec laureline : oui, un advisory lock éliminerait le problème. De la même façon que modifier la conf gunicorn pour n'avoir qu'un seul process max sur une seule machine règlerait le problème. :)
Tant qu'on trouve des options pour réduire les réécritures des tables et vues, il faut les exploiter puisque c'est ça le vrai bug ici.

#7

Mis à jour par Frédéric Péters il y a environ 2 ans

    valid_ids = set()
    for formdef in FormDef.select(ignore_migration=True):
        valid_ids.add(int(formdef.id))

tu devrais pouvoir juste prendre FormDef.keys(), ça évitera même de charger les pickls.

#9

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Assigné à mis à Lauréline Guérin
#10

Mis à jour par Frédéric Péters il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée
#11

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit f68b91ddf7f61379576c6b4c317b56c6a3e2acf4
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri Apr 1 16:32:39 2022 +0200

    sql: simplify wcs_all_forms clean on formdef removal (#63387)
#12

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#13

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF