Project

General

Profile

Bug #94877

toulouse_maelis: trigger wcs envoyé avec un payload vide

Added by Sentry Io 3 days ago. Updated 1 day ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Target version:
-
Start date:
04 September 2024
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/126836/

TypeError: 'NoneType' object is not subscriptable
  File "passerelle/base/management/commands/cron.py", line 62, in handle
    getattr(connector, frequency)()
  File "passerelle/contrib/toulouse_maelis/models.py", line 416, in hourly
    self.trigger_subscriptions_cron()
  File "passerelle/contrib/toulouse_maelis/models.py", line 410, in trigger_subscriptions_cron
    subscription.trigger()
  File "contextlib.py", line 81, in inner
    return func(*args, **kwds)
  File "passerelle/contrib/toulouse_maelis/models.py", line 4898, in trigger
    'trigger wcs: %s -> %s' % (base_url, self.wcs_trigger_payload['data']['subscription_status'])

connector "toulouse-maelis.maelis" error running hourly job

Associated revisions

Revision 516f9e18 (diff)
Added by Nicolas Roche 2 days ago

toulouse-maelis: prevent cron to trigger an empty payload to wcs (#94877)

History

#1

Updated by Nicolas Roche 3 days ago

  • Project changed from Suivi des traces to Passerelle
  • Subject changed from TypeError: 'NoneType' object is not subscriptable to toulouse_maelis: trigger wcs envoyé avec un payload vide
  • Assignee set to Nicolas Roche

Je n'arrive pas à écrire de test pour le montrer :
à mon avis, le trigger a été envoyé alors qu'il n'était pas encore configuré :

    @transaction.atomic
    def notify(self):
    ...
                // notifie maélis
                result = obj.resource.call(
                    'Invoice',
                    'payInvoices',
                )

        obj.maelis_notification_date = now()  #  <-- trigger_status devient 'triggering'
        obj.maelis_notification_data = result
        obj.save()

        # à ce moment, le cron peut envoyer le trigger

        if obj.basket_generation_date is not None:
            # match paid invoice with subscriptions and trigger w.c.s.
            obj.set_trigger_subscriptions()               #  <-- le payload du trigger n'est positionné qu'à ce moment là

A noter qu'il n'y a pas vraiment de conséquence, le trigger est rejoué ensuite, une fois configuré.

#2

Updated by Nicolas Roche 3 days ago

Pour moi c'est la suite de #87168 où l'on a d'abord notifié maélis avant wcs.

#3

Updated by Robot Gitea 3 days ago

  • Status changed from Nouveau to Solution proposée

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

#4

Updated by Benjamin Dauvergne 3 days ago

Nicolas Roche a écrit :

Je n'arrive pas à écrire de test pour le montrer :
à mon avis, le trigger a été envoyé alors qu'il n'était pas encore configuré :

[...]

A noter qu'il n'y a pas vraiment de conséquence, le trigger est rejoué ensuite, une fois configuré.

C'est dans une transaction ce n'est pas possible que le cron en voie les modifications avant que la transaction ne commit.

#5

Updated by Robot Gitea 3 days ago

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

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

#6

Updated by Robot Gitea 2 days ago

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

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

#7

Updated by Transition automatique 1 day ago

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

Also available in: Atom PDF