Bug #6247
"psycopg2.InternalError: cache lookup failed for relation xxxx" lors du drop_views
0%
Description
Trace reçue lors d'une modif d'un formulaire par Victor sur FSB (mais je n'ai pas réussi à reproduire l'erreur...) :
Exception: type = '<class 'psycopg2.InternalError'>', value = 'cache lookup failed for relation 21985 ' Stack trace (most recent call first): File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 414, in drop_views 412 413 for view_name in view_names: > 414 cur.execute('''DROP VIEW IF EXISTS %s''' % view_name) 415 416 cur.execute('''DROP VIEW IF EXISTS wcs_all_forms''') locals: cur = <cursor object at 0x2fab528; closed: 0> view_names = ['wcs_category_tourisme', 'wcs_category_enfance_jeunesse', 'wcs_category_etat_civil', 'wcs_category_services_techni ques'] formdef = <FormDef 'signaler un probl\xc3\xa8me' id:11> view_name = 'wcs_category_tourisme' conn = <connection object at 0x2fefb40; dsn: 'dbname=wcs_fsb_test_au_quotidien_com', closed: 0> row = None File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 244, in f 242 except psycopg2.Error: 243 get_connection().rollback() > 244 raise 245 return f 246 locals: args = (<FormDef 'signaler un probl\xc3\xa8me' id:11>,) func = <function drop_views at 0x3205488> kwargs = {} File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 331, in do_formdef_tables 329 # views may have been dropped when dropping columns, so we recreate 330 # them even if not asked to. > 331 drop_views(formdef) 332 do_views(formdef) 333 (...)
Je ne sais pas interpréter le "cache lookup failed for relation ..."
Fichiers
Historique
Mis à jour par Frédéric Péters il y a plus de 9 ans
À la seconde de la trace, il y a deux POST sur des formdefs.
212.94.190.230 - - [06/Jan/2015:11:22:12 +0100] "POST /admin/forms/9/fields/21/ HTTP/1.1" 302 757 "https://fsb.test.au-quotidien.com/admin/forms/9/fields/21/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" 212.94.190.230 - - [06/Jan/2015:11:22:12 +0100] "POST /admin/forms/11/fields/new HTTP/1.1" 500 9299 "https://fsb.test.au-quotidien.com/admin/forms/11/fields/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
Mis à jour par Thomas Noël il y a plus de 9 ans
Sous entendu, tu imagines une sort d'accès "concurrent" problématique ?
Mis à jour par Frédéric Péters il y a plus de 9 ans
C'est vers ça que des commentaires dans le second lien donné pointaient. ("I don't think we are doing that, but it may be that two queries are
attempting to drop the same table "if exists".")
Mis à jour par Thomas Noël il y a plus de 9 ans
- Statut changé de Nouveau à En cours
Selon les échanges cités, c'est un soucis qui pourrait disparaître en pg>9.3. Fred si tu lis la même chose, je propose de mettre ce ticket en prio basse. Quand jessie sera sortie, on fermera gentilment...
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0002-sql-drop-and-create-views-in-a-single-transaction-62.patch 0002-sql-drop-and-create-views-in-a-single-transaction-62.patch ajouté
- Assigné à mis à Frédéric Péters
- Patch proposed changé de Non à Oui
La correction est théorique, on n'a pas de tests d'exécutions parallèles.
Mis à jour par Thomas Noël il y a plus de 9 ans
Ack ; un peu de transactions plus explicites ça ne peut pas faire de mal.
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
commit cb074d737f4de388a98c5a8dff267d1edc45f0a7 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jan 12 21:33:37 2015 +0100 sql: drop and create views in a single transaction (#6247)
Mis à jour par Thomas Noël il y a presque 9 ans
- Statut changé de Résolu (à déployer) à En cours
Juste pour dire que ca n'est pas corrigé (mais que je pense que c'est parce que postgresql 9.1, donc sera corrigé à l'upgrade jessie)
Exception: type = '<class 'psycopg2.InternalError'>', value = 'cache lookup failed for relation 411846 ' Stack trace (most recent call first): File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 594, in drop_global_views 592 593 for view_name in view_names: > 594 cur.execute('''DROP VIEW IF EXISTS %s''' % view_name) 595 596 cur.execute('''DROP VIEW IF EXISTS wcs_all_forms''')
lié à deux accès simultané (dont on pourrait chercher la cause, aussi):
192.168.44.1 - - [03/Jul/2015:15:47:38 +0200] "GET /backoffice/forms/152/fields/14/delete HTTP/1.0" 200 626 "https://demo.dev.au-quotidien.com/backoffice/forms/152/fields/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0" 192.168.44.1 - - [03/Jul/2015:15:47:38 +0200] "GET /backoffice/forms/152/fields/14/delete HTTP/1.0" 500 671 "https://demo.dev.au-quotidien.com/backoffice/forms/152/fields/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0"
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Assigné à
Frédéric Péterssupprimé - Patch proposed changé de Oui à Non
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de En cours à Fermé
postgresql 9.1, donc sera corrigé à l'upgrade jessie
Ça a été fait :)