[
https://jira.jboss.org/jira/browse/JBPM-2360?page=com.atlassian.jira.plug...
]
Joram Barrez resolved JBPM-2360.
--------------------------------
Resolution: Done
There are two options to delete a deployment:
* repositoryService.deleteDeployment(): this method will do a check if there are still
process instances running. If there are, then the deployment is not deleted. If not, then
only history is kept.
* repositoryService.deleteDeploymentCascade(): this method will not do a check and delete
everything associated with the deployment (including history).
The first operation is a subset of the second one, so the following is valid for both
operations:
* After deployment deletion
* Starting a new process instance will throw a JbpmException. Als on other nodes,
since before starting, a DB check is done
* Signalling a process instance that was active at the time of the deletion, will
throw a JbpmException on all nodes
* Finding a process instance associated with the deployment on both nodes will return
a null value on all nodes
-> Added a testcase to verify this behaviour.
There was however another issue with the repositoryCache. If a deployment deletion occurs
on one node, then all the use case above will work correctly, but the caches on the other
nodes are not aware of the deletion. Only on the node where the deletion happens, the
cache is updated (as part of the command). This could potentially lead to a memory leak
since the repositoryCache on the other nodes only grows.
-> Added a check and cache cleanup to the repositorySession when a process definition
isn't found. This removes any entry in the cache that is not valid (ie deployed)
anymore.
fix deletion of deployments in cluster
--------------------------------------
Key: JBPM-2360
URL:
https://jira.jboss.org/jira/browse/JBPM-2360
Project: JBoss jBPM
Issue Type: Task
Security Level: Public(Everyone can see)
Components: Runtime Engine
Reporter: Tom Baeyens
Assignee: Joram Barrez
Fix For: jBPM 4.1
when a deployment gets deleted, the request arrives in one node of the cluster. that
node can remove the deployment and its process definition from the repository cache
immediately.
but how will the other nodes in the cluster know ?
some check with db access has to be added every time an object (process definition) is
fetched from the repository cache. alternatively this can also be enforced at those
locations where suspended must be checked: in the commands for starting a new execution,
signalling and so on.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira