Bonjour,
On intègre des données via des adapteurs.
On les lance via des crons durant la nuit pour ne pas impacter les utilisateurs lors de la journée.
On a eu un comportement bizarre et on aimerait savoir s’il y a des pistes qui peut nous aider.
Le problème est un blocage de threads ce qui bloque nos traitement aussi .
Le Job est bloqué, mais il faudrait trouver la stack du thread qui bloque tout le monde.
Ca sent le deadlock entre les threads qui sont lancés en parallèle.
Comment sont configurées vos Cron au niveau du “run as” ? vous pouvez créer des users techniques distincts pour avoir des runAs séparés = grants et ses objects isolés
Sinon Simplicité utilise un droit interne/système qui peut potentiellement utiliser des ressources communes en concurrence d’accès.
Comment sont gérées les concurrences d’accès dans votre code ? utilisez vous des synchronized sur les ressource partagées entre threads ?
Mais pour aller plus vite et ne pas bloquer le thread, on peut faire en sorte que le getGrant() ne soit jamais le même grâce au “runAs” (ou carrément faire un new Grant / init).
Ensuite si vous avez placé un lock/synchronized sur un Grant (système ou technique) ou sur une méthode Java, c’est normal qu’ils attendent tous que le premier termine. Il faut essayer de le retrouver il doit être :
running = normal si des millions de trucs à faire ? ou anormal = parti en boucle
ou blocked = à priori anormal dead-lock sur une ressource en commun