Project

General

Profile

Bug #60098

ValueError: The 'content' attribute has no file associated with it.

Added by Sentry Io about 1 year ago. Updated about 1 year ago.

Status:
Nouveau
Priority:
Normal
Assignee:
Target version:
-
Start date:
27 December 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

https://sentry.entrouvert.org/entrouvert/nfrance/issues/54185/

ValueError: The 'content' attribute has no file associated with it.
  File "passerelle/base/models.py", line 828, in run
    job_info = getattr(self.resource, self.method_name)(**self.parameters)
  File "passerelle/contrib/toulouse_smart/models.py", line 313, in add_media_job
    if not wcs_request_file.push():
  File "passerelle/contrib/toulouse_smart/models.py", line 430, in push
    files = {'media': (self.filename, self.content.open('rb'), self.content_type)}
  File "django/db/models/fields/files.py", line 73, in open
    self._require_file()
  File "django/db/models/fields/files.py", line 39, in _require_file
    raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)

error running add_media_job job (The 'content' attribute has no file associated with it.)

History

#1

Updated by Lauréline Guérin about 1 year ago

  • Project changed from Suivi des traces to Passerelle
#2

Updated by Benjamin Dauvergne about 1 year ago

  • Assignee set to Nicolas Roche
#3

Updated by Nicolas Roche about 1 year ago

Je n'arrive pas à reproduire.
C'est comme si le job avait été joué une première fois (jusqu'au self.content.delete()), puis à nouveau
(ce que je ne confirme pas dans les logs).

#4

Updated by Benjamin Dauvergne about 1 year ago

J'ai cherché un peu, je ne comprends pas non plus l'origine du problème, il faudrait remonter à la demande dans w.c.s. ainsi que voir les logs d'exécution pour l'objet wcs_request associé pour aller plus loin.

#5

Updated by Nicolas Roche about 1 year ago

il faudrait remonter à la demande dans w.c.s

Dans jenkins on voit <WcsRequestFile: WcsRequestFile object (26)>
(il y a aussi 27 qui été envoyée dans la foulée avec un second appel WS)

   $ ssh toulouse-test-1
   $ sudo -u passerelle passerelle-manage shell -d passerelle.cutm-publik-preprod.nfrance.com

   from passerelle.contrib.toulouse_smart.models import WcsRequestFile
   req = WcsRequestFile.objects.get(id=26)
   req.resource.wcs_form_number
   > '117-2042'

https://demarches-montoulouse.cutm-publik-preprod.nfrance.com/backoffice/management/allo-toulouse-signalements/2042/
Rien de spécial à signaler.

ainsi que voir les logs d'exécution pour l'objet wcs_request associé pour aller plus loin.

   from passerelle.base.models import Job
   Job.objects.get(method_name='create_intervention_job', natural_id__contains=2042).creation_timestamp
   > datetime.datetime(2021, 12, 17, 12, 52, 23, 777537, tzinfo=<UTC>)
   Job.objects.get(method_name='create_intervention_job', natural_id__contains=2042).update_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 9, 571783, tzinfo=<UTC>)

   Job.objects.get(method_name='add_media_job', parameters__id=26).creation_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 12, 501891, tzinfo=<UTC>)
   Job.objects.get(method_name='add_media_job', parameters__id=26).update_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 18, 521990, tzinfo=<UTC>)

On voit que smart c'est réveillé le 3 janvier et que le jobs d'ajout du média n'a été joués qu'une seule fois (créé puis mis à jour en 6 secondes) contrairement à ce que je pensais.

   from passerelle.base.models import ResourceLog
   import datetime

   // création de la demande d'intervention (ok)
   ResourceLog.objects.get(appname='toulouse-smart', slug='smart-preprod', timestamp__gt=datetime.datetime(2022, 1, 3, 14, 30, 9, tzinfo=datetime.timezone.utc), timestamp__lt=datetime.datetime(2022, 1, 3, 14, 30, 10, tzinfo=datetime.timezone.utc)).extra['response_status']
   > 200

   // 6 appels (2 appels au endpoint, 2 requêtes PUT vers smart et 2 notification d'erreur sur les jobs)
   [(x.id, x.timestamp) for x in ResourceLog.objects.filter(appname='toulouse-smart', slug='smart-preprod', timestamp__gt=datetime.datetime(2022, 1, 3, 14, 30, 12, tzinfo=datetime.timezone.utc), timestamp__lt=datetime.datetime(2022, 1, 3, 14, 30, 19, tzinfo=datetime.timezone.utc))]
   > [(2549705, datetime.datetime(2022, 1, 3, 14, 30, 12, 411778, tzinfo=<UTC>)),
   (2549706, datetime.datetime(2022, 1, 3, 14, 30, 12, 697323, tzinfo=<UTC>)),
   (2549707, datetime.datetime(2022, 1, 3, 14, 30, 15, 96643, tzinfo=<UTC>)),
   (2549708, datetime.datetime(2022, 1, 3, 14, 30, 16, 100534, tzinfo=<UTC>)),
   (2549710, datetime.datetime(2022, 1, 3, 14, 30, 18, 349480, tzinfo=<UTC>)),
   (2549711, datetime.datetime(2022, 1, 3, 14, 30, 18, 358980, tzinfo=<UTC>))]

Les logs montre que les 2 requêtes PUT d'ajout des média dans smart ont réussi (200).

   ResourceLog.objects.get(id=2549707).extra['response_status']
   > 200

Bref, j'attends de voir si le bug se reproduit parce que là je cale.

Also available in: Atom PDF