We faced very strange issue in Camunda timer recently.
We had started the timer and it did not executed on the set datetime. When we checked in cockpit there was no error. Also , we tried to update the due date via cockpit and even from Camunda rest API. Date was updating successfully but still it was not getting executed.
I checked couple of articles online and found that timer is a ‘job’ for Camunda and it stores the data in ACT_RU_JOB table and sequentially it picks the job and execute it. But somehow Camunda was not picking from the table and it was getting piled-up.
When I set this property - camunda.bpm.job-execution.deployment-aware to false it started working. All the jobs are working fine now. I checked in Camunda forum and did not get clear information.
Can anybody please help on the same. Or faced similar kind of issues with timer.
Camunda Version > 7.12 with spring boot
This could happen if you have too many async jobs queued up to be processed by job executor. It could be quite possible that all job executor threads are busy processing jobs in queue(example waiting for an API to respond). Timers are by default async jobs and should be acquired and executed by job executor if job executor is busy processing other jobs in the queue it may never have picked up timer job though it is due. execute below query and see what jobs are stuck
select lock_owner_,exclusive_,process_instance_id_, process_def_key_, create_time_
from act_ru_job where LOCK_EXP_TIME_ is not null and suspension_state_=1
order by create_time_;
Hi,
How do you deploy your process models - are they embedded in your springboot app or do you deploy via the REST API from modeller or similar?
When the engine starts up, it will register in ephemeral memory its local, packaged deployments. If the deployments were via the REST api, then whilst the resources are in the DB, the engine node will not register them as a local deployment. This is where deployment aware comes in. WIth resources in the DB only, there is a risk that a delegated class etc may not be present on that node and thus the engine will not attempt to run that job. WIth deployment aware false, you are telling the engine nodes that its ok to run any job as you will ensure the resources required will be in the classpath somehow…
regards
Rob
1 Like
Hi Rob, Thanks for the response , Yes they are embedded in spring boot app , so in that case we should always keep camunda.bpm.job-execution.deployment-aware to false , to make sure that Camunda will always try to run the job.
Hi,
Given your resources are bundled in the app, deployment aware should be fine. If you changed the setting, then I assume you did a restart and thus the restart could have cleared the blockage rather than the change to config fixing the problem… Do you use connectors to make remote calls in your process models?
regards
Rob