CMDBuild Forum

RollbackException if workflow runs too long

i have programmed a workflow for automatic synchronization for user-permissions. However it takes quite some time and after it finishes i get the following Error:

Call: services/json/workflow/saveactivity
------------------------------------------
Error: org.cmdbuild.workflow.CMWorkflowException: javax.transaction.RollbackException
    at org.cmdbuild.workflow.service.AbstractSharkService.advanceActivityInstance(AbstractSharkService.java:435)
    at org.cmdbuild.workflow.service.TransactedSharkService.access$1301(TransactedSharkService.java:16)
    at org.cmdbuild.workflow.service.TransactedSharkService$13.command(TransactedSharkService.java:225)
    at org.cmdbuild.workflow.service.TransactedSharkService$13.command(TransactedSharkService.java:222)
    at org.cmdbuild.workflow.service.TransactedSharkService$TransactedExecutor.execute(TransactedSharkService.java:24)
    at org.cmdbuild.workflow.service.TransactedSharkService.advanceActivityInstance(TransactedSharkService.java:222)
    at org.cmdbuild.workflow.DefaultWorkflowEngine.advanceActivity(DefaultWorkflowEngine.java:455)
    at org.cmdbuild.logic.WorkflowLogic.updateActivity(WorkflowLogic.java:397)
    at org.cmdbuild.logic.WorkflowLogic.updateOnlyActivity(WorkflowLogic.java:390)
    at org.cmdbuild.logic.WorkflowLogic.startProcess(WorkflowLogic.java:286)
    at org.cmdbuild.logic.WorkflowLogic.startProcess(WorkflowLogic.java:279)
    at org.cmdbuild.servlets.json.Workflow.saveActivity(Workflow.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:97)
    at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: javax.transaction.RollbackException
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at org.enhydra.shark.ejb.client.ws.WAPIEJBEndpointPortSoapBindingStub.changeActivityInstanceState(Unknown Source)
    at org.cmdbuild.workflow.service.AbstractSharkService.advanceActivityInstance(AbstractSharkService.java:431)
    ... 50 more

 

Expanding all timeouts didnt help and while this only rolls the data of the workflow (not the user-permissions it sets) back, it is still illing all Log-information saved into the Workflow. Is there a known workaround for this problem?

 

thx in advance :)

Hi all

 

I have figured out how to deal with this problem. There are 2 timeouts to be encreased. One of them is Apache CXF for low level HTTP communication. Second one is OW2-JOTM transaction timeout. Well this is what you need to do:

 

1) Download apache-cxf-2.6.11-src.tgz (or what where version you use)

2) Edit file rt/transports/http/src/main/resources/schemas/wsdl/http-conf.xsd

3) Set default timeout that you want

Example:

<xs:attribute name="ReceiveTimeout" type="xs:unsignedInt" use="optional" default="900000">

Do that for BOTH

sections (Server and Client)

4) Compile new jar file with   export MAVEN_OPTS=-Xmx512m;  mvn -Pfastinstall

5) Compilation can fail but all we need is file rt/transports/http/target/cxf-rt-transports-http-2.6.11.jar

6) Put it in cmdbuild/WEB-INF/lib and shark/WEB-INF/lib

Timeout can be probably set using configuration files but i had no such many time to play with configuration.

 

7) Now increasing timeout for JOTM transaction

8) Download and unpack ow2-jotm-src-2.2.1.tgz

9) Edit file core/src/main/java/org/objectweb/jotm/Current.java

10) Set private static final int DEFAULT_TIMEOUT = 900;

11) And again run mvn clean install

12) Copy core/target/jotm-core-2.2.1.jar to shark/WEB-INF/lib

13) Restart tomcat

 

Timeout can also be possibly set using config file shark/META-INF/context.xml

Indeed that try to do so

        <Resource

                auth="Container"

                name="UserTransaction"

                type="javax.transaction.UserTransaction"

                factory="org.objectweb.jotm.UserTransactionFactory"

                jotm.timeout="180"/>

 

jotm.timeout="180" should do the thing but it just does not.

 

If you have any questions find me in skype konstantins.trusins

 

Previously Alexander Weber wrote:

i have programmed a workflow for automatic synchronization for user-permissions. However it takes quite some time and after it finishes i get the following Error:

Call: services/json/workflow/saveactivity
------------------------------------------
Error: org.cmdbuild.workflow.CMWorkflowException: javax.transaction.RollbackException
    at org.cmdbuild.workflow.service.AbstractSharkService.advanceActivityInstance(AbstractSharkService.java:435)
    at org.cmdbuild.workflow.service.TransactedSharkService.access$1301(TransactedSharkService.java:16)
    at org.cmdbuild.workflow.service.TransactedSharkService$13.command(TransactedSharkService.java:225)
    at org.cmdbuild.workflow.service.TransactedSharkService$13.command(TransactedSharkService.java:222)
    at org.cmdbuild.workflow.service.TransactedSharkService$TransactedExecutor.execute(TransactedSharkService.java:24)
    at org.cmdbuild.workflow.service.TransactedSharkService.advanceActivityInstance(TransactedSharkService.java:222)
    at org.cmdbuild.workflow.DefaultWorkflowEngine.advanceActivity(DefaultWorkflowEngine.java:455)
    at org.cmdbuild.logic.WorkflowLogic.updateActivity(WorkflowLogic.java:397)
    at org.cmdbuild.logic.WorkflowLogic.updateOnlyActivity(WorkflowLogic.java:390)
    at org.cmdbuild.logic.WorkflowLogic.startProcess(WorkflowLogic.java:286)
    at org.cmdbuild.logic.WorkflowLogic.startProcess(WorkflowLogic.java:279)
    at org.cmdbuild.servlets.json.Workflow.saveActivity(Workflow.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:97)
    at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: javax.transaction.RollbackException
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at org.enhydra.shark.ejb.client.ws.WAPIEJBEndpointPortSoapBindingStub.changeActivityInstanceState(Unknown Source)
    at org.cmdbuild.workflow.service.AbstractSharkService.advanceActivityInstance(AbstractSharkService.java:431)
    ... 50 more

 

Expanding all timeouts didnt help and while this only rolls the data of the workflow (not the user-permissions it sets) back, it is still illing all Log-information saved into the Workflow. Is there a known workaround for this problem?

 

thx in advance :)