Non lancement de Cron et changement de langue

Bonjour,
On a eu un souci en lançant un export csv, on a bien forcé la langue qu’on veut avoir en extraction (langue API) :
getGrant().setLangPreference(“API”);
getGrant().changeLang(“API”, true);
L’extraction se fait via un cron qu’on a affecté au profil designer qui a bien la langue API
On a 3 problèmes :

  1. Il y a des fois que le cron ne se lance pas
  2. Il y a des fois que le cron se lance avec la mauvaise langue
  3. Le lancement via un autre utilisateur (IPN technique) ==> cause aussi des fois le changement de langue (Anglais ou Français à la place d’API)
    On aimerait savoir si vous avez eu des problèmes de ce genre et s’il y avait des préconisations pour qu’on puisse les résoudre?

Je vous remercie d’avance.

Laila Bouzidi

[Platform]
Status=OK
Version=5.1.34
BuiltOn=2022-03-08 22:43
Git=release/c918537deac7126b956c24846fa872b3c10118d2
Encoding=UTF-8
EndpointIP=172.20.50.136
EndpointURL=http://mla-api-5497bb5976-z29jc:8080
TimeZone=Europe/Paris
SystemDate=2022-04-14 10:55:52

Plusieurs choses:

  1. pour vos extractions via cron, mieux vaudrait selon moi utiliser un user ad hoc dont vous ne changez pas la langue dynamiquement

  2. changer la langue d’un user via Grant.changeLang est un changement “lourd” = mise à jour de la langue en base + rechargement du user. Si l’utilisateur en question utilise la UI ou fait d’autres type d’appel qui changent la langue de la même manière cela peut expliquer que la langue à un instant donnée ne soit pas forcément celle souhaitée

Le point 2 rejoint le point 1 => si vous voulez être sûr de la langue de vos extractions, celles-ci ne doivent pas se faire via un user dont vous ne maitrisez pas à 100% la langue à un instant donné.

@Francois vois tu des choses à ajouter/préciser(/contredire) ?

1 Like

Merci David pour ses préconisations, j’ai une petite question : c’est quoi un user ad hoc?

Je veux dire un user spécifiquement déclaré pour faire ces exports par cron (et rien d’autre)

1 Like

Je confirme qu’il ne faut pas faire un changeLang sur le singleton système qui peut être utilisé par ailleurs. Et un simple setLang est suffisant car change la langue en mémoire sans recharger les droits, les menus… mais bon si un autre programme a besoin du système pour autre chose, il y aura des pb de concurrences d’accès imprévisibles.

  • Il suffit de créer un utilisateur avec la bonne langue et les bonnes responsabilités
  • Et de l’associer au champ “run as” dans vos cron

Tous les getObject de votre code lié à l’action de la cron seront fait avec ce User.

1 Like

Merci pour ton retour François.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.