Anomalie #2082
Instanciation en mode conteneur échoue sur une machine trop rapide
Description
Sur une machine trop rapide, l'instanciation d'un serveur en mode conteneur échoue.
Visiblement Cheetah n'aime pas qu'on templatise 2 fichiers avec le même nom dans un temps très court. Il utilise alors le contenu du 1er template pour créer le second fichier. C'est particulièrement gênant dans le cadre du mode conteneur, en effet, il y a des boucles utilisant un fichier temporaire '/tmp/container.tmpl'. Si je met un sleep(1) dans la boucle, ca fonctionne. Si je retire le sleep(1) tous les fichiers sont identiques.
Je propose donc d'utilise mktemp plutôt que de nommer directement un fichier.
--- cfgparser.py.old 2011-09-20 17:23:54.000000000 +0200 +++ cfgparser.py 2011-09-20 17:28:20.000000000 +0200 @@ -12,6 +12,7 @@ from glob import glob from commands import getstatusoutput from shutil import move +from tempfile import mktemp try: import json except: @@ -632,7 +633,7 @@ except: import traceback traceback.print_exc() - inputfile='/tmp/container.tmpl' + inputfile=mktemp() files = glob(join(inputdir, '*')) fd = open(inputfile, 'wa') for filename in files: @@ -644,7 +645,7 @@ t.process(self) for container in containers: - inputfile='/tmp/container.tmpl' + inputfile=mktemp() files = glob(join(self._make_root_path(container), 'interfaces.d', '*')) fd = open(inputfile, 'wa') for filename in files: @@ -961,7 +962,7 @@ fh.close() for container in cname: - inputfile='/tmp/container.tmpl' + inputfile=mktemp() inputdir = join(self._make_root_path(container), 'hosts.d') outputfile = join(self._make_root_path(container), config.VIRTBASE, 'etc/hosts') files = glob(join(inputdir, '*'))
Associated revisions
see #2082 Do not change user's authentication method when a wrong authentication occured
cfgparser.py : application du patch avec utilisation de mktemp (fixes #2082)
History
#1 Updated by Joël Cuissinat over 11 years ago
- Target version set to Mises à jour 2.3 - 02 RC
#2 Updated by Joël Cuissinat over 11 years ago
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Appliqué par commit 19656a8318912336be8536933f80cbcb1bb68b87.
#3 Updated by Fabrice Barconnière over 11 years ago
- Status changed from Résolu to Fermé
- Distribution set to EOLE 2.3