We have an issue in our production environment wherein, after a new deployment of our Camunda Process application war file, the previous instances which were created as part of the previous deployment are failing. However the new deployment does not contain any bpmn changes, but only certain java code changes.
They are failing at an activity which is an async system task, after arriving from a timer catch event which was triggered on timeout.
In this scenario:
How do we ensure that the existing instances do not fail after any subsequent future deployments?
Is there a way to recover the current instances that have failed?
The version details of our application are:
Camunda Process Engine: 7.12.0 Application Server: JBoss EAP Standalone 7.2.5
The scenario where we are facing the issues is something similar to the one represented in the bpmn below. I’ve also shown our deployment architecture below.
Certain process instances are created in Deployment A. While these instances are waiting at ‘Timer A’ , another deployment of the process application is done, let’s say, deployment B.
Now once the Timer A reaches time out and is triggered, the instances created in Deployment A fail at Async Job B , with the error: Unknown property used in expression: ${myClass.myMethodB(arg1,arg2)}. Cause: Cannot resolve identifier myClass.
However, the process instances created as part of deployment B do not throw this error and the Async job B gets successfully executed for them.
How can we avoid this? Is there any deployment descriptor file/configuration file that we have to include in our deployment and any specific attributes that we need to configure in order to ensure that the existing instances do not fail in the new deployment?