Projet

Général

Profil

Bug #73760

Erreur récurrente sur les tests/build paserelle la relation « filr_rest_filr » n'existe pas

Ajouté par Nicolas Roche il y a plus d'un an. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
23 janvier 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Je l'ai eu ici et là :
https://jenkins.entrouvert.org/job/gitea-wip/job/passerelle/job/PR-51/
https://jenkins.entrouvert.org/job/gitea-wip/job/passerelle/job/PR-52/
Sur le second ticket, c'est passé juste en relançant jenkins au bout de la troisième fois.
Sur le premier c'est passé aussi au bout de la troisième fois, mais suite à un commit.
Cependant, je ne l'ai pas eu ici :
https://jenkins.entrouvert.org/job/gitea-wip/job/passerelle/job/PR-53/

Je la reproduis en locale, mais uniquement si je tourne le tests complets :

$ tox -e py3-django22-xmlschema10
self = <django.db.backends.utils.CursorWrapper object at 0x7fe2a3ce52b0>
sql = 'SELECT "filr_rest_filr"."id", "filr_rest_filr"."title", "filr_rest_filr"."slug", "filr_rest_filr"."description", "fil...ies", "filr_rest_filr"."verify_cert", "filr_rest_filr"."http_proxy", "filr_rest_filr"."base_url" FROM "filr_rest_filr"'
params = ()
ignored_wrapper_args = (False, {'connection': <django.db.backends.postgresql.base.DatabaseWrapper object at 0x7fe2e18b8400>, 'cursor': <django.db.backends.utils.CursorWrapper object at 0x7fe2a3ce52b0>})

    def _execute(self, sql, params, *ignored_wrapper_args):
        self.db.validate_no_broken_transaction()
        with self.db.wrap_database_errors:
            if params is None:
                return self.cursor.execute(sql)
            else:
>               return self.cursor.execute(sql, params)
E               psycopg2.errors.UndefinedTable: ERREUR:  la relation « filr_rest_filr » n'existe pas
E               LINE 1: ...r"."http_proxy", "filr_rest_filr"."base_url" FROM "filr_rest...
E                                                                            ^

/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/backends/utils.py:84: UndefinedTable

The above exception was the direct cause of the following exception:

self = <tests.ldap.test_manager.TestImportExport object at 0x7fe2d8aefbb0>, app = <django_webtest.DjangoTestApp object at 0x7fe2a31b6160>, resource_class = <class 'passerelle.apps.ldap.models.Resource'>
resource_params = {'description': 'resource', 'ldap_tls_cert': <ContentFile: Raw content>, 'ldap_tls_key': <ContentFile: Raw content>, 'ldap_url': 'ldap://localhost.entrouvert.org:52271', ...}

    def test_import(self, app, resource_class, resource_params):
        assert not resource_class.objects.count()
>       response = app.get('/manage/')

tests/ldap/test_manager.py:151: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django_webtest/__init__.py:124: in get
    response = super(DjangoTestApp, self).get(url, **kwargs)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/webtest/app.py:324: in get
    return self.do_request(req, status=status,
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django_webtest/__init__.py:86: in do_request
    response = super(DjangoTestApp, self).do_request(req, status,
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/contrib/staticfiles/handlers.py:65: in __call__
    return self.application(environ, start_response)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/wsgi.py:141: in __call__
    response = self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/base.py:75: in get_response
    response = self._middleware_chain(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/utils/deprecation.py:94: in __call__
    response = response or self.get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:36: in inner
    response = response_for_exception(request, exc)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:90: in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/exception.py:34: in inner
    response = get_response(request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/base.py:115: in _get_response
    response = self.process_exception_by_middleware(e, request)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/core/handlers/base.py:113: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/contrib/auth/decorators.py:21: in _wrapped_view
    return view_func(request, *args, **kwargs)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/views/generic/base.py:71: in view
    return self.dispatch(request, *args, **kwargs)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/views/generic/base.py:97: in dispatch
    return handler(request, *args, **kwargs)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/views/generic/base.py:158: in get
    context = self.get_context_data(**kwargs)
passerelle/views.py:136: in get_context_data
    context['apps'].extend(app.objects.all())
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/models/query.py:274: in __iter__
    self._fetch_all()
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/models/query.py:1242: in _fetch_all
    self._result_cache = list(self._iterable_class(self))
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/model_utils/managers.py:38: in __iter__
    yield from iter
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/models/query.py:55: in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/models/sql/compiler.py:1142: in execute_sql
    cursor.execute(sql, params)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/backends/utils.py:67: in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/backends/utils.py:76: in _execute_with_wrappers
    return executor(sql, params, many, context)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/backends/utils.py:84: in _execute
    return self.cursor.execute(sql, params)
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/utils.py:89: in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <django.db.backends.utils.CursorWrapper object at 0x7fe2a3ce52b0>
sql = 'SELECT "filr_rest_filr"."id", "filr_rest_filr"."title", "filr_rest_filr"."slug", "filr_rest_filr"."description", "fil...ies", "filr_rest_filr"."verify_cert", "filr_rest_filr"."http_proxy", "filr_rest_filr"."base_url" FROM "filr_rest_filr"'
params = ()
ignored_wrapper_args = (False, {'connection': <django.db.backends.postgresql.base.DatabaseWrapper object at 0x7fe2e18b8400>, 'cursor': <django.db.backends.utils.CursorWrapper object at 0x7fe2a3ce52b0>})

    def _execute(self, sql, params, *ignored_wrapper_args):
        self.db.validate_no_broken_transaction()
        with self.db.wrap_database_errors:
            if params is None:
                return self.cursor.execute(sql)
            else:
>               return self.cursor.execute(sql, params)
E               django.db.utils.ProgrammingError: ERREUR:  la relation « filr_rest_filr » n'existe pas
E               LINE 1: ...r"."http_proxy", "filr_rest_filr"."base_url" FROM "filr_rest...
E                                                                            ^

=============================================================================================
/tmp/tox-nroche/passerelle/py3-django22-xmlschema10/lib/python3.9/site-packages/django/db/backends/utils.py:84: ProgrammingError

FAILED tests/ldap/test_manager.py::TestImportExport::test_import - django.db.utils.ProgrammingError: ERREUR: la relation « filr_rest_filr » n'existe pas

Révisions associées

Révision 3d181b33 (diff)
Ajouté par Benjamin Dauvergne il y a environ un an

tests: use migration fixture from authentic (#73760)

Révision 25344cbe (diff)
Ajouté par Benjamin Dauvergne il y a environ un an

tests: remove test declared xfail (#73760)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a environ un an

  • Assigné à mis à Emmanuel Cazenave
#2

Mis à jour par Emmanuel Cazenave il y a environ un an

J'y comprends alors j'ai fait une fausse application bidon, et ça plante sur celle-ci maintenant (https://jenkins.entrouvert.org/job/passerelle-wip/job/wip%252F73760-wtf/2/testReport/):

django.db.utils.ProgrammingError: ERREUR:  la relation « alala_ololo_aaaa » n'existe pas
LINE 1: ...ription", "alala_ololo_aaaa"."base_soap_url" FROM "alala_olo...
#3

Mis à jour par Benjamin Dauvergne il y a environ un an

Et j'ai relancé plusieurs fois le job, c'est intermittent :/

#4

Mis à jour par Emmanuel Cazenave il y a environ un an

Je tente des builds sans xdist, pour voir si ça a un rapport.

#5

Mis à jour par Emmanuel Cazenave il y a environ un an

Emmanuel Cazenave a écrit :

Je tente des builds sans xdist, pour voir si ça a un rapport.

Oui à 90% (j'ai pas lancé assez de builds sans xdist pour dire 100%).

Aussi ça n'a rien à voir avec l'application firl_rest : dans une branche où j'ai shooté cette application, ça se met à péter sur une autre.

psycopg2.errors.UndefinedTable: ERREUR:  la relation « pdf_resource » n'existe pas
E               LINE 1: ...escription", "pdf_resource"."fill_form_file" FROM "pdf_resou...

Quand même ça ne casse pas sur n'importe lesquelles, filr et pdf introduites récemment.

Je m'en vais tenter une bonne vieille dichotomie en espérant tomber sur le commit fautif, si tant est qu'il existe.

#6

Mis à jour par Frédéric Péters il y a environ un an

Tout autre chose (inspiré par #74787), on avait à la fois le job jenkins -wip et le job gitea... qui se déclenchaient, sur la même branche, à un moment plutôt similaire, ça ne pourrait pas être la source de cette affaire ?

#7

Mis à jour par Emmanuel Cazenave il y a environ un an

Frédéric Péters a écrit :

Tout autre chose (inspiré par #74787), on avait à la fois le job jenkins -wip et le job gitea... qui se déclenchaient, sur la même branche.

J'allais dire que non parce ça se produit aussi sur main, pas que dans les branches, mais je regarde le job gitea et je découvre https://jenkins.entrouvert.org/job/gitea/job/passerelle/job/main/, mais pas d'historique, va savoir.

#8

Mis à jour par Emmanuel Cazenave il y a environ un an

J'ai testé l'approche numéro random de #74787 dans le job https://jenkins.entrouvert.org/job/s/ (passerelle-73760) et sur un des run est ressorti la trace "la relation « filr_rest_filr » n'existe pas".

Donc à priori vraiment pas une histoire de jobs concurrents.

#9

Mis à jour par Valentin Deniaud il y a environ un an

Un truc à tester éventuellement c'est d'essayer de reproduire en ayant viré les trois tests qui utilisent la fixture transactional_db.

#10

Mis à jour par Emmanuel Cazenave il y a environ un an

Valentin Deniaud a écrit :

Un truc à tester éventuellement c'est d'essayer de reproduire en ayant viré les trois tests qui utilisent la fixture transactional_db.

https://jenkins.entrouvert.org/job/s/ configuré pour tourner toutes les 30 minutes sur wip/73760-transactional-db où ces trois tests sont virés.

#12

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Sujet changé de Erreur récuprente sur les tests/build paserelle la relation « filr_rest_filr » n'existe pas à Erreur récurrente sur les tests/build paserelle la relation « filr_rest_filr » n'existe pas
#13

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Nouveau à En cours
  • Assigné à changé de Emmanuel Cazenave à Benjamin Dauvergne

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#14

Mis à jour par Robot Gitea il y a environ un an

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#15

Mis à jour par Benjamin Dauvergne il y a environ un an

Bon j'ai trouvé ça vient du test de migration dans toulouse_smart que j'ai écrit avec les pieds au lieu de reprendre le code qui marche coté authentic.

#16

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de En cours à Solution proposée
#17

Mis à jour par Robot Gitea il y a environ un an

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

Nicolas Roche (nroche) a approuvé une pull request sur Gitea concernant cette demande :

#18

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Solution validée à Résolu (à déployer)

Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :

#19

Mis à jour par Benjamin Dauvergne il y a environ un an

Note pour plus tard pour debugger ça :
  • ajouter dans tox.ini [passenv] PGPORT PGHOST PGUSER PGPASSWORD
  • lancer pg_virtualenv -o log_statement=all bash
  • dans la session bash lancer tox comme d'habitude
  • dans /tmp/pg_virt*/log/*.log on peut voir toutes les commandes SQL lancées et voir celles qui font foirer le run (typiquement une altération au schéma dans un BEGIN/COMMIT qui n'est pas défait) et trouver le test qui pose souci en cherchant un peu autour
#20

Mis à jour par Transition automatique il y a environ un an

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

Mis à jour par Transition automatique il y a 12 mois

Automatic expiration

Formats disponibles : Atom PDF