Projet

Général

Profil

Bug #30754

création de document : sur une situation d'erreur libreoffice, on peut se trouver avec False comme file descriptor

Ajouté par Frédéric Péters il y a environ 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
19 février 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Dans #30749 il est question de libreoffice pas installé, et il y a eu mise à jour derrière qui empêche une analyse plus poussée, mais dans l'hypothèse que le problème était plus compliqué que ça, qu'un exécutable libreoffice existait bel et bien déjà, on va se trouver avec transform_to_pdf appelé, et un crash sur l'appel qui donnera ça :

        except subprocess.CalledProcessError:
            return False

et de là False qui sera retourné par apply_template_to_formdata,

        if self.convert_to_pdf:
            if transform_to_pdf is None:
                raise Exception('libreoffice is missing')
            return transform_to_pdf(outstream)

puis une tentative d'enregistrement,

        if self.attach_to_history:
            evo.add_part(AttachmentEvolutionPart(
                filename,
                outstream,
                content_type=content_type,
                varname=self.varname))
            formdata.store()

et l'AttachmentEvolutionPart avec False comme outstream, plutôt qu'un file descriptor, ça va faire

Exception:
  type = '<type 'exceptions.AttributeError'>', value = ''bool' object has no attribute 'seek''

Stack trace (most recent call first):
  File "/usr/lib/python2.7/dist-packages/wcs/qommon/misc.py", line 571, in file_digest
   569 def file_digest(content, chunk_size=100000):
   570     digest = hashlib.sha256()
>  571     content.seek(0)
   572
   573     def read_chunk():

  locals:
     chunk_size = 100000
     content = False
     digest = <sha256 HASH object @ 0x7f28200a6800>

  File "/usr/lib/python2.7/dist-packages/wcs/workflows.py", line 202, in __getstate__
   200
   201         if not 'filename' in odict:
>  202             filename = file_digest(self.fp)
   203             dirname = os.path.join(dirname, filename[:4])
   204             if not os.path.exists(dirname):

Fichiers

Révisions associées

Révision 3ccd6f4c (diff)
Ajouté par Frédéric Péters il y a environ 5 ans

workflows: fail if libreoffice is failing (#30754)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 5 ans

Pour crasher de manière intelligible.

#2

Mis à jour par Emmanuel Cazenave il y a environ 5 ans

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

J'aime les crashs explicites.

#3

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 3ccd6f4cc945fe1b654b8a070731d45ea05527b7
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Tue Feb 19 12:05:17 2019 +0100

    workflows: fail if libreoffice is failing (#30754)
#4

Mis à jour par Frédéric Péters il y a environ 5 ans

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

Formats disponibles : Atom PDF