Project

General

Profile

Bug #74787

Conflit sur les bases de données dans le build

Added by Emmanuel Cazenave 3 months ago. Updated 3 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
23 February 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

https://jenkins.entrouvert.org/job/passerelle/3504/testReport/

psycopg2.errors.DuplicateDatabase: ERREUR:  la base de données « passerelle-test-_gw3 » existe déjà

History

#1

Updated by Frédéric Péters 3 months ago

Oui c'est le build de test "s" https://jenkins.entrouvert.org/job/s/ ("passerelle-73760") qui tourne en parallèle sur main et plouf, puisque :

            'NAME': ('passerelle-test-%s' % os.environ.get("BRANCH_NAME", "").replace('/', '-'))[:58],

Quantité d'options ici. (ajouter un numéro random, ou utiliser une autre variable d'environnement, type BUILD_TAG, virer le job, etc.)

#2

Updated by Emmanuel Cazenave 3 months ago

  • Assignee set to Emmanuel Cazenave

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

Oui c'est le build de test "s" https://jenkins.entrouvert.org/job/s/ ("passerelle-73760") qui tourne en parallèle sur main et plouf, puisque :

Ce job ne tourne pas sur main.

#3

Updated by Robot Gitea 3 months ago

  • Status changed from Nouveau to En cours

Emmanuel Cazenave (ecazenave) a ouvert une pull request sur Gitea concernant cette demande :

#4

Updated by Frédéric Péters 3 months ago

Ok une précédente occurence j'ai souvenir que c'était le cas; mais si ce n'est pas ce job c'est un autre qui était sur main à ce moment-là. Et je vois maintenant que le build pointé date du 20 février, c'est exactement celui pour lequel j'avais regardé, et qui avait donné https://git.entrouvert.org/entrouvert/bidon/commit/234a4dcec747a871384b5476f76d00abd48b12e0 (laissé de côté parce que migration gitea)

#5

Updated by Benjamin Dauvergne 3 months ago

Sinon utiliser pg_virtualenv permet de ne pas se soucier du nom de la base ainsi que d'activer des options qui accélèrent un peu les tests, comme fsync=off.

authentic$ git grep fsync
Jenkinsfile:PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox run --recreate ${env.TOXARGS}""" 

#6

Updated by Emmanuel Cazenave 3 months ago

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

https://git.entrouvert.org/entrouvert/bidon/commit/234a4dcec747a871384b5476f76d00abd48b12e0 (laissé de côté parce que migration gitea)

Je suis partis sur la même chose avant de voir ton message. Ça marche sur un job jenkins normal mais ça foire dans un job gitea sur les chemins tox :

No such file or directory: '/tmp/tox-jenkins/passerelle/jenkins-gitea-passerelle-wip/74787-build-tag-4/py3-django32-xmlschema14-codestyle-coverage/lib/python3.9/site-packages/xmlschema/schemas/XSD_1.0/XMLSchema.xsd'

Avec sur le système de fichier un /tmp/tox-jenkins/passerelle/jenkins-gitea-passerelle-wip%2F74787-build-tag-4.

Et tu as a du tomber sur un truc similaire sur le nom de la DB puisque tu fais 'NAME': ('bidon-test-%s' % os.environ.get("BUILD_TAG", "").replace('%2', '-').removeprefix('jenkins-'))[:63],, qu'il faudrait adapter d'une façon ou d'une autre pour le chemin tox.

Mais je trouve que ça devient vraiment lourdingue et chiant, alors je suis parti sur l'utilisation d'un numéro random, c'est plus simple et ça marche sur les jobs standards/gitea avec sur les noms de db des :

passerelle-test-18174_gw0
passerelle-test-18174_gw1
passerelle-test-18174_gw2
passerelle-test-18174_gw3
passerelle-test-18174_gw4
passerelle-test-18174_gw5

Avec un chemin tox : /tmp/tox-jenkins/passerelle/18174/

#7

Updated by Robot Gitea 3 months ago

  • Status changed from En cours to Solution proposée
#8

Updated by Emmanuel Cazenave 3 months ago

  • Status changed from Solution proposée to En cours

Benjamin Dauvergne a écrit :

Sinon utiliser pg_virtualenv

J'ai failli me laisser séduire, mais pas encore chaud bouillant, peut-être à cause de la ligne cabalistique que ça rajoute dans le Jenkinsfile.

#9

Updated by Benjamin Dauvergne 3 months ago

Emmanuel Cazenave a écrit :

Benjamin Dauvergne a écrit :

Sinon utiliser pg_virtualenv

J'ai failli me laisser séduire, mais pas encore chaud bouillant, peut-être à cause de la ligne cabalistique que ça rajoute dans le Jenkinsfile.

La partie PG_PORT n'est pas nécessairement compliqué, je n'avais pas cherché bien loin à l'époque mais on peut filter bêtement le chemin d'une socket unix, donc

PGPORT=${env.TMPDIR)/postgres.sock pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox run --recreate ${env.TOXARGS}

PS: Ça me marche pas :/

#10

Updated by Robot Gitea 3 months ago

  • Status changed from En cours to Solution proposée
  • Assignee changed from Emmanuel Cazenave to Benjamin Dauvergne

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

#11

Updated by Benjamin Dauvergne 3 months ago

  • Assignee changed from Benjamin Dauvergne to Emmanuel Cazenave
#12

Updated by Frédéric Péters 3 months ago

  • Status changed from Solution proposée to En cours

Pas claire l'intention de la PR fermée ?

#13

Updated by Robot Gitea 3 months ago

  • Status changed from En cours to Solution proposée
#14

Updated by Robot Gitea 3 months ago

  • Status changed from Solution proposée to Solution validée

Agate Berriot (aberriot) a approuvé une pull request sur Gitea concernant cette demande :

#15

Updated by Robot Gitea 3 months ago

  • Status changed from Solution validée to Résolu (à déployer)

Emmanuel Cazenave (ecazenave) a mergé une pull request sur Gitea concernant cette demande :

#16

Updated by Transition automatique 3 months ago

  • Status changed from Résolu (à déployer) to Solution déployée
#17

Updated by Transition automatique 12 days ago

Automatic expiration

Also available in: Atom PDF