Timer is not getting registered with JobExecutor

I have an intermediate-catch timer that works fine in dev environment, but is not picked up by JobExecutor in production (Camunda Spring Boot Eventing Engine Plugin, Tomcat/9.0.45, Quartz Scheduler v.2.3.2, Spring-Bootv2.3.10.RELEASE, Camunda Platform Spring Boot Starter v7.16.0 ). Specifically, the following is present in dev but missing from prod:

04-13 09:02:37.751 DEBUG [nvpsv-pm,41ddffb9c44fdd5c,210e5279e736ac19,true] org.camunda.bpm.engine.jobexecutor : ENGINE-14017 Notifying Job Executor of new job notifying job executor of new job
04-13 09:02:37.751 DEBUG [nvpsv-pm,] org.camunda.bpm.engine.jobexecutor : ENGINE-14012 Job acquisition thread woke up

Prior to this, I see that timer is being inserted in act_ru_job (both environments):
04-13 09:02:37.743 DEBUG [nvpsv-pm,41ddffb9c44fdd5c,210e5279e736ac19,true] o.c.b.e.i.p.e.JobEntity.insertTimer : ==> Preparing: insert into ACT_RU_JOB ( ID, TYPE, LOCK_OWNER, LOCK_EXP_TIME, EXCLUSIVE, EXECUTION_ID, PROCESS_INSTANCE_ID, PROCESS_DEF_ID, PROCESS_DEF_KEY, RETRIES, EXCEPTION_STACK_ID, EXCEPTION_MSG, FAILED_ACT_ID, DUEDATE, REPEAT, REPEAT_OFFSET, HANDLER_TYPE, HANDLER_CFG, DEPLOYMENT_ID, SUSPENSION_STATE, JOB_DEF_ID, PRIORITY, SEQUENCE_COUNTER, TENANT_ID, CREATE_TIME, REV ) values (?, ‘timer’, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1 )
04-13 09:02:37.743 DEBUG [nvpsv-pm,41ddffb9c44fdd5c,210e5279e736ac19,true] o.c.b.e.i.p.e.JobEntity.insertTimer : ==> Parameters: 5200b265-baef-11ec-98e0-a66bf0858009(String), null, null, true(Boolean), 52008b53-baef-11ec-98e0-a66bf0858009(String), f98d7165-baeb-11ec-bec3-a66bf0858009(String), a22356a3-ba8e-11ec-8b30-5ef79a7ba6ae(String), EAID_B930BC26-FFFD-42FE-BFF4-AD173F131B6C(String), 3(Integer), null, null, null, 2022-04-13 09:02:42.737(Timestamp), null, 0(Long), timer-intermediate-transition(String), IntermediateThrowEvent_0bog53i(String), a13db1e1-ba8e-11ec-8b30-5ef79a7ba6ae(String), 1(Integer), a22356a5-ba8e-11ec-8b30-5ef79a7ba6ae(String), 0(Long), 1(Long), null, 2022-04-13 09:02:37.737(Timestamp)

I would appreciate any suggestions )

Hi @javabypete,

how do you deploy the process to the production system? Did you restart the engine after deployment?

The job executor can run in a hetergenous cluster and remember for which jobs a single process engine is reponsible for. There are some combinations possible, where your process engine now assumes that it is not reponsible for this job anymore. The main reason for this to avoid NoClassDefFoundExceptions.

You can find more details about the setup here in the Docs: The Job Executor | docs.camunda.org. The setting of jobExecutorDeploymentAware is the most important one.

Hope this helps, Ingo

Hi @Ingo_Richtsmeier ,
Thank you for your response. The engine was restarted after deployment and after config changes. I tried setting camunda.bpm.job-execution.deployment-aware: false (which is default anyway), but it didn’t help. Why would the log entries “Notifying Job Executor of new job” and “Job acquisition thread woke up” be missing after the normal timerInsert?
“Notifying Job Executor of new job” gets logged, but only after insertMessage, not after insertTimer.
Thanks again for your help.

<camunda-bpm-spring-boot-starter.version>7.16.0</camunda-bpm-spring-boot-starter.version>
<camunda-bpm-spring-boot-starter-external-task-embedded-client.version>0.2.0</camunda-bpm-spring-boot-starter-external-task-embedded-client.version>
<camunda-bpm-spring-boot-starter-test.version>2.2.0</camunda-bpm-spring-boot-starter-test.version>
<camunda-bpm-assert.version>8.0.0</camunda-bpm-assert.version>