Bug #101684
Erreur 500 sur un import de site
0%
Description
L'import du fichier pour la mise en place des pages de Publik Documents sur l'instance de recette de la mairie de Saint-Paul provoque une 500.
Le problème a été détecté hier par Marie, je reproduis ce matin sur l'instance en question. La trace :
févr. 04 20:27:07 node1 uwsgi/combo[2161320]: {address space usage: 374702080 bytes/357MB} {rss usage: 134303744 bytes/128MB} [pid: 2161320|app: 0|req: 12487/50427] 0.0.0.0 () {60 vars in 1220 bytes} [Tue Feb 4 20:27:07 2025] GET /service-worker.js => generated 4800 bytes in 14 msecs (HTTP/1.0 200) 3 headers in 123 bytes (1 switches on core 0) févr. 04 20:27:07 node1 uwsgi[2158272]: combo ERROR portail-mairie-saintpaul.test-re.entrouvert.org 90.104.198.255 08181d1e34a24f9cb43eac7c65d24a46 s:jrz4 r:7F5C Internal Server Error: /manage/site-import Traceback (most recent call last): File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ psycopg2.errors.NotNullViolation: null value in column "uuid" of relation "wcs_wcsformcell" violates not-null constraint DETAIL: Failing row contains (2, _linkslist:2, 1, t, eservices:pdo-demarche-exemple-qui-depose-un-document, , , 4, , {}, f, , 2023-10-23 17:54:47.172+00, null, null, null). The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/contrib/auth/decorators.py", line 23, in _wrapper_view return view_func(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/contrib/auth/decorators.py", line 23, in _wrapper_view return view_func(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/edit.py", line 153, in post return self.form_valid(form) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/combo/manager/views.py", line 210, in form_valid pages = import_site(json_site, request=self.request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/combo/data/utils.py", line 129, in import_site pages = Page.load_serialized_pages(data.get('pages') or [], request=request, job=job) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/combo/data/models.py", line 782, in load_serialized_pages cls.load_serialized_cells(cells_to_load) File "/usr/lib/python3/dist-packages/combo/data/models.py", line 756, in load_serialized_cells cell.object.import_subobjects(cell_data) File "/usr/lib/python3/dist-packages/combo/data/models.py", line 2177, in import_subobjects link.save() File "/usr/lib/python3/dist-packages/django/core/serializers/base.py", line 288, in save models.Model.save_base(self.object, using=using, raw=True, **kwargs) File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 877, in save_base updated = self._save_table( ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 1020, in _save_table results = self._do_insert( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 1061, in _do_insert return manager._insert( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 87, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 1805, in _insert return query.get_compiler(using=using).execute_sql(returning_fields) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql cursor.execute(sql, params) File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 67, in execute return self._execute_with_wrappers( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute with self.db.wrap_database_errors: File "/usr/lib/python3/dist-packages/django/db/utils.py", line 91, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ django.db.utils.IntegrityError: null value in column "uuid" of relation "wcs_wcsformcell" violates not-null constraint DETAIL: Failing row contains (2, _linkslist:2, 1, t, eservices:pdo-demarche-exemple-qui-depose-un-document, , , 4, , {}, f, , 2023-10-23 17:54:47.172+00, null, null, null). févr. 04 20:27:07 node1 uwsgi/combo[2158272]: {address space usage: 374329344 bytes/356MB} {rss usage: 134680576 bytes/128MB} [pid: 2158272|app: 0|req: 7535/50428] 0.0.0.0 () {70 vars in 1627 bytes} [Tue Feb 4 20:27:06 2025] POST /manage/site-import => generated 145 bytes in 890 msecs (HTTP/1.0 500) 7 headers in 316 bytes (1 switches on core 0)
Je ne reproduis pas sur ma devinst locale. Je ne vois pas ce que j'aurais pu raté lors du déploiement de l'instance qui provoque cette erreur.
History
Updated by Valentin Deniaud about 2 months ago
Updated by Yann Weber about 2 months ago
- Status changed from Nouveau to Information nécessaire
- Assignee set to Yann Weber
Valentin Deniaud a écrit :
Je pense que l'export que tu utilises est trop vieux, depuis les cellules ont gagnées des uuids et la colonne a été passée à null=False (#96180 puis #96426). Il faudrait régénérer cet export
Merci pour la piste (et les références vers les tickets), c'est la même que Fred évoque dans le ticket lié.
Ma crainte d'un autre problème est lié au fait que je ne reproduis pas sur mon installation locale qui embarque pourtant le code de #96180 et #96426.
Donc soit je rate quelque chose, soit l'export devrait aussi être trop vieux pour ma devinst non ? D'autant que je n'ai rien trouvé dans les commits entre le tag v6.37 (la version en recette (?)) et main qui expliquerait un comportement plus permissif de l'import.
Je vais attendre que Marie génère un nouvel export et tente de l'importer pour fermer le ticket.