Le Job Executor de Camunda 7 ne traite pas les jobs – Causes racines et solutions

 Dans Camunda 7, le Job Executor est responsable de l’exécution des tâches en arrière-plan comme les timers, les continuations asynchrones, les retries et les batch jobs.

Un problème fréquent en production est le suivant :

Les jobs sont bien créés en base de données, mais le Job Executor ne les exécute pas.

Cet article explique les causes racines, les méthodes de diagnostic et les solutions concrètes utilisées en environnement réel.


1️⃣ Qu’est-ce que le Job Executor dans Camunda 7 ?

Le Job Executor est un pool de threads qui :

  • Acquiert les jobs depuis la base de données

  • Verrouille les jobs

  • Les exécute de manière asynchrone

Il gère notamment :

  • Les événements temporisés (timers)

  • Les continuations asynchrones (asyncBefore, asyncAfter)

  • Les retries après échec

  • Les batch jobs (cleanup historique, migration, etc.)

Lorsqu’il ne fonctionne pas, les processus restent bloqués.


2️⃣ Causes racines les plus courantes

🔴 1. Job Executor désactivé

Le Job Executor peut être désactivé par configuration.

Vérifier la configuration :

Engine XML

<property name="jobExecutorActivate">true</property>

Camunda BPM Run (application.yml)

camunda: bpm: job-execution: enabled: true

📌 Solution : activer le Job Executor et redémarrer l’application.


🔴 2. Verrous de jobs bloqués en base

Après un crash ou un arrêt brutal, certains jobs restent verrouillés.

Tables concernées :

  • ACT_RU_JOB

  • Colonnes LOCK_OWNER, LOCK_EXP_TIME

Si LOCK_EXP_TIME est encore valide, le job ne sera pas repris.

📌 Solution :

  • Attendre l’expiration du verrou

  • Ou nettoyer les verrous (avec validation DBA)


🔴 3. Pool de threads saturé

Si tous les threads sont occupés ou bloqués, aucun nouveau job n’est exécuté.

📌 Solution : augmenter la taille du pool.

camunda: bpm: job-execution: core-pool-size: 10 max-pool-size: 20

🔴 4. Échec silencieux de l’acquisition des jobs

Problèmes fréquents :

  • Connexion base de données instable

  • Deadlocks

  • Latence réseau

Logs à surveiller :

ENGINE-14019 Exception during job acquisition

📌 Solution :

  • Vérifier la connexion DB

  • Ajuster le pool de connexions

  • Surveiller les verrous DB


🔴 5. Jobs sans retries

Un job avec RETRIES = 0 ne sera plus exécuté.

SELECT ID_, RETRIES_ FROM ACT_RU_JOB;

📌 Solution :

  • Réinitialiser les retries via Cockpit

  • Corriger l’exception initiale


🔴 6. Problèmes en environnement cluster

Dans un cluster :

  • Tous les nœuds doivent partager la même base

  • Une dérive d’horloge peut bloquer l’exécution

📌 Solution :

  • Synchronisation NTP

  • Configuration moteur identique sur tous les nœuds


🔴 7. Code personnalisé bloquant

Les Java Delegates ou Listeners peuvent :

  • Bloquer des threads

  • Créer des boucles infinies

  • Geler les transactions

📌 Solution :

  • Éviter la logique lourde dans les delegates

  • Utiliser des workers externes

  • Ajouter des timeouts et logs


3️⃣ Checklist de diagnostic rapide

✔ Cockpit → Jobs
✔ Logs DEBUG :

org.camunda.bpm.engine.jobexecutor

✔ Vérification des verrous DB
✔ Thread dump
✔ Historique des incidents


4️⃣ Bonnes pratiques en production

✅ Activer explicitement le Job Executor
✅ Ajuster le pool de threads selon la charge
✅ Surveiller ACT_RU_JOB
✅ Utiliser les async boundaries avec précaution
✅ Externaliser les traitements lourds


5️⃣ Besoin d’aide experte ?

Si vos jobs :

  • s’arrêtent aléatoirement en production

  • génèrent des incidents répétés

  • posent problème après montée en charge

Un accompagnement professionnel est recommandé.


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés à Camunda en production, au Job Executor ou aux performances, je propose des services de conseil payants, débogage en production, support projet et formations ciblées.

📧 Contactishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium 

Comments

Popular posts from this blog

jBPM Installation Guide: Step by Step Setup

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained