Camunda 7 Job Executor Not Picking Jobs – Root Cause & Fixes
In Camunda 7, the Job Executor is responsible for executing background jobs such as timers, asynchronous continuations, retries, and batch operations.
A common production issue is:
❌ Jobs are created in the database, but the Job Executor is not picking or executing them.
This blog explains the root causes, how to diagnose, and how to fix this issue in real projects.
1️⃣ What Is the Job Executor in Camunda 7?
The Job Executor is a background thread pool that:
Acquires jobs from the database
Locks them
Executes them asynchronously
It handles:
Timer events
Async continuations (
asyncBefore,asyncAfter)Failed job retries
Batch jobs (history cleanup, migrations, etc.)
If it is not working correctly, processes appear “stuck”.
2️⃣ Most Common Root Causes
🔴 1. Job Executor Is Disabled
By default, it can be disabled via configuration.
Check configuration:
BPMN / Engine config
Camunda BPM Run (application.yml)
📌 Fix: Enable the Job Executor and restart the engine.
🔴 2. Database Job Locks Are Stuck
If the engine crashes or is force-stopped, jobs may remain locked.
Check DB tables:
ACT_RU_JOBLOCK_OWNERLOCK_EXP_TIME
If LOCK_EXP_TIME is in the future, jobs won’t be picked.
📌 Fix:
Wait for lock expiration
Or manually clear locks (only with DBA approval)
🔴 3. Thread Pool Exhausted
If all job executor threads are busy or blocked, no new jobs are picked.
Symptoms:
No job execution logs
Thread dump shows blocked threads
Default settings may be too low for production.
📌 Fix: Increase thread pool size.
🔴 4. Job Acquisition Is Failing Silently
Sometimes acquisition fails due to:
Database connection issues
Deadlocks
Network latency
Check logs for:
📌 Fix:
Verify DB connectivity
Check connection pool size
Monitor DB locks
🔴 5. Failed Jobs Reached Retry Limit
Jobs with retries = 0 are not picked again.
Check in DB or Cockpit:
📌 Fix:
Increase retries manually
Fix root exception
Use Cockpit → Set retries
🔴 6. Multiple Engine Nodes Competing Incorrectly
In clustered environments:
Nodes must share the same database
Clock drift can block acquisition
📌 Fix:
Sync system clocks (NTP)
Ensure same engine configuration on all nodes
🔴 7. Custom Code Blocking Execution
Custom Java Delegates or Listeners can:
Block threads
Cause infinite loops
Hang transactions
📌 Fix:
Avoid long-running logic inside delegates
Move heavy logic to external workers
Add proper logging and timeouts
3️⃣ How to Diagnose Quickly (Checklist)
✔ Check Cockpit → Jobs
✔ Enable DEBUG logs:
✔ Verify database locks
✔ Take a thread dump
✔ Check retries and incident history
4️⃣ Production Best Practices
✅ Always enable Job Executor explicitly
✅ Tune thread pool for production load
✅ Monitor ACT_RU_JOB and incidents
✅ Use async boundaries carefully
✅ Avoid heavy logic inside delegates
5️⃣ When to Ask for Expert Help
If:
Jobs stop randomly in production
You see repeated incidents
Scaling causes instability
Then professional debugging is recommended.
💼 Professional Support Available
If you are facing issues in real projects related to Camunda production, Job Executor failures, or performance problems, I provide paid consulting, production debugging, project support, and focused trainings.
📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com🌐 Website: IT Trainings | Digital metal podium
Comments
Post a Comment