WorkflowSession.terminateWorkflow() throwing javax.jcr.InvalidItemStateException
--------------------------------------------------------------------------------
Key: JCR-3193
URL: https://issues.apache.org/jira/browse/JCR-3193
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-core
Affects Versions: 2.2.4
Environment: Day CQ 5.4
Reporter: Bala Kondepudi
Priority: Critical
Hi,
I am observing a consistent issue when trying to terminate a workflow with
Workflow Session terminateWorkflow() method. Pasted the code and exception
below.
The termination is leaving the workflow in an incomplete state where the
instances is aborted or cleaned (observed that workflow is not available in
instances of workflow console) but the workflow lock on the payload is not
removed or refreshed.
Because of this issue the payload is not eligible for any workflow process.
<TestCase>
public class MyWorkflowEventListener implements EventHandler, JobProcessor {
.
.
.
public boolean process(Event event) {
try{
.
.
.
WorkflowSession wfSession = getWorkflowSession();
String instanceId = (String) event
.getProperty(WorkflowEvent.WORKFLOW_INSTANCE_ID);
Workflow workflow = (instanceId != null) ? wfSession
.getWorkflow(instanceId) : null;
if (eventType.equals(WorkflowEvent.WORKFLOW_STARTED_EVENT)) {
Node jcrContentNode = ((javax.jcr.Session) wfSession.getSession()).
getNode("/content/en_UK/home/abc/jcr:content");
jcrContentNode.setProperty("my_staus","TERMINATED");
wfSession.getSession().save();
session.terminateWorkflow(workflow);
}
}catch(Exception e){
e.printStackTrace();
}
}
private WorkflowSession getWorkflowSession() {
try {
Session adminSession = repository.loginAdministrative(null);
return workflowService.getWorkflowSession(adminSession);
} catch (RepositoryException e) {
e.printStackTrace();
}
}
.
.
}
</TestCase>
<Exception>
Log Message: Exception block: SOME EXCEPTION OCCURRED.| Output Data:
com.day.cq.workflow.WorkflowException: Error occured while aborting workflow:
/etc/workflow/instances/2011-12-23/model_16822486799933
at
com.day.cq.workflow.impl.jcr.WorkflowManager.abort(WorkflowManager.java:176)
at
com.day.cq.workflow.impl.CQWorkflowSession.terminateWorkflow(CQWorkflowSession.java:281)
at
com.abc.workflow.MyWorkflowFailTest.initializeWorkflowStart(com.abc.workflow.MyWorkflowFailTest.java:193)
at com.abc.workflow.MyWorkflowEventListener
.process(com.abc.workflow.MyWorkflowEventListener.java:111)
at org.apache.sling.event.jobs.JobUtil$1.run(JobUtil.java:272)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.jcr.InvalidItemStateException:
114a382d-52ec-4998-969f-80b392238930 has been modified externally
at
org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:262)
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
at
org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:42)
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:355)
at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:758)
at com.day.crx.core.CRXSessionImpl.save(CRXSessionImpl.java:126)
at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.sling.jcr.base.SessionProxyHandler$SessionProxyInvocationHandler.invoke(SessionProxyHandler.java:109)
at $Proxy0.save(Unknown Source)
at
com.day.cq.workflow.impl.jcr.WorkflowManager.abort(WorkflowManager.java:173)
... 7 more
</Exception>
Thanks,
Bala Kondepudi
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira