cancel
Showing results for 
Search instead for 
Did you mean: 

Basic question on transactions

hbf
Champ on-the-rise
Champ on-the-rise
Hi list,

A have a few very basic question regarding transactions in Alfresco:

1. Looking at the NodeService Java API, no routine seems to take a transaction as a parameter. This is because every call to the API will run in its own transaction, as documented here. However, if you begin a transaction obtained via getUserTransaction() then the API is using this as the "global transaction". Is this correct so far?

2. Is this global transaction per Java thread?

3. How can I run two independent transactions in parallel? Put differently, how can I make sure that two threads using this global transaction will not run in the same transaction?

I am asking this because my code runs in parallel to the Web Client ("parallel" meaning in the same Tomcat instance, albeit in a different webapp) and I need to start a new, independent transaction at the beginning of a web request and end it later. (I suppose the Web Client, too, needs independent transaction for the potentially different users it is serving…)

4. What does TransactionService's getNonPropagatingUserTransaction() return?

Regarding 4., I've taken a look at the code in RetryingTransactionHelper.java and have got the impression that getNonPropagatingUserTransaction() returns a new transaction. However, if I use this routine from my (non-Web Client) webapp once at the beginning of each web request then the Web Client asks me to log in again. So it seems getNonPropagatingUserTransaction() also changes the global transaction.

In other words, what ways does Alfresco give me to run my own transaction? I understand that I need to Spring-configure my transactions but cannot see how. Can you point my to an example/more documentation?

Okay, thanks for your patience. I hope the answers help others as well.

Kaspar
5 REPLIES 5

davidc
Star Contributor
Star Contributor
1. Looking at the NodeService Java API, no routine seems to take a transaction as a parameter. This is because every call to the API will run in its own transaction, as documented here. However, if you begin a transaction obtained via getUserTransaction() then the API is using this as the "global transaction". Is this correct so far?

2. Is this global transaction per Java thread?

It's a transaction per thread.

3. How can I run two independent transactions in parallel? Put differently, how can I make sure that two threads using this global transaction will not run in the same transaction?

By default, each thread has its own transaction.  There isn't a notion of a global transaction.

4. What does TransactionService's getNonPropagatingUserTransaction() return?

A UserTransaction representing a new transaction for the current thread.

However, if I use this routine from my (non-Web Client) webapp once at the beginning of each web request then the Web Client asks me to log in again.

Transactions and authentication are two very independent concepts.  You'll also need to authenticate the current thread.  See AuthenticationService.  On a single thread, you should 1) authenticate, 2) start trx, 3) do work, 4) end trx, 5) unauthenticate.

hbf
Champ on-the-rise
Champ on-the-rise
David, thanks for your reply. I see much clearer now.

Regarding my problem that the Web Client logs me out or complains about "transaction has already been marked for rollback", I'll try to find out more about what's going on and might get back later. Your clarifications have already helped me a lot!

Kaspar

hbf
Champ on-the-rise
Champ on-the-rise
I've tried to investigate further but could not find a solution.

David, can you think of any reason why the Web Client, running in a different webapp (and thus different thread) could throw an exception like the following?

15:55:35,849 User:admin ERROR [ui.common.Utils] Failed to get to do tasks: javax.transaction.RollbackException: The transaction has already been marked for rollback
javax.transaction.RollbackException: The transaction has already been marked for rollback
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:404)
   at org.alfresco.web.bean.workflow.WorkflowBean.getTasksToDo(WorkflowBean.java:217)
   at sun.reflect.GeneratedMethodAccessor690.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457)
   at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
   at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535)
   at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
   at org.apache.commons.el.UnaryOperatorExpression.evaluate(UnaryOperatorExpression.java:156)
   at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
   at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1078)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:601)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIForm.processDecodes(UIForm.java:56)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:138)
   at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:613)
15:55:35,876 User:admin ERROR [ui.common.Utils] Failed to get pooled tasks: javax.transaction.RollbackException: The transaction has already been marked for rollback
javax.transaction.RollbackException: The transaction has already been marked for rollback
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:404)
   at org.alfresco.web.bean.workflow.WorkflowBean.getPooledTasks(WorkflowBean.java:167)
   at sun.reflect.GeneratedMethodAccessor691.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457)
   at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
   at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535)
   at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
   at org.apache.commons.el.UnaryOperatorExpression.evaluate(UnaryOperatorExpression.java:156)
   at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
   at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1078)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:601)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIForm.processDecodes(UIForm.java:56)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:138)
   at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:613)
15:55:35,898 User:admin ERROR [ui.common.Utils] Failed to get all active tasks: javax.transaction.RollbackException: The transaction has already been marked for rollback
javax.transaction.RollbackException: The transaction has already been marked for rollback
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:404)
   at org.alfresco.web.bean.workflow.WorkflowBean.getAllActiveTasks(WorkflowBean.java:118)
   at sun.reflect.GeneratedMethodAccessor692.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457)
   at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
   at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535)
   at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
   at org.apache.commons.el.UnaryOperatorExpression.evaluate(UnaryOperatorExpression.java:156)
   at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
   at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1078)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:601)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIForm.processDecodes(UIForm.java:56)
   at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
   at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:138)
   at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:613)
15:55:35,928 User:admin ERROR [ui.common.Utils] NavigatorPluginBean exception in getCompanyHomeRootNodes()
javax.transaction.RollbackException: The transaction has already been marked for rollback
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:404)
   at org.alfresco.web.bean.ajax.NavigatorPluginBean.getCompanyHomeRootNodes(NavigatorPluginBean.java:346)
   at org.alfresco.web.ui.repo.component.UINavigator.encodeBegin(UINavigator.java:260)
   at org.alfresco.web.ui.common.Utils.encodeRecursive(Utils.java:540)
   at org.alfresco.web.ui.common.Utils.encodeRecursive(Utils.java:553)
   at org.alfresco.web.ui.repo.component.UISidebar.encodeChildren(UISidebar.java:196)
   at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:483)
   at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:364)
   at org.apache.jsp.jsp.browse.browse_jsp._jspService(browse_jsp.java:538)
   at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
   at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
   at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
   at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
   at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:613)
15:55:36,038 User:admin ERROR [ui.common.Utils] A system error happened during the operation: The transaction has already been marked for rollback
javax.transaction.RollbackException: The transaction has already been marked for rollback
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:404)
   at org.alfresco.web.bean.BrowseBean.queryBrowseNodes(BrowseBean.java:847)
   at org.alfresco.web.bean.BrowseBean.getNodes(BrowseBean.java:443)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457)
   at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
   at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535)
   at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
   at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
   at org.alfresco.web.ui.common.component.data.UIRichList.getValue(UIRichList.java:154)
   at org.alfresco.web.ui.common.component.data.UIRichList.getDataModel(UIRichList.java:508)
   at org.alfresco.web.ui.common.component.data.UIRichList.bind(UIRichList.java:451)
   at org.alfresco.web.ui.common.renderer.data.RichListRenderer.encodeChildren(RichListRenderer.java:83)
   at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
   at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:483)
   at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:364)
   at org.apache.jsp.jsp.browse.browse_jsp._jspx_meth_a_005frichList_005f0(browse_jsp.java:2402)
   at org.apache.jsp.jsp.browse.browse_jsp._jspx_meth_a_005fpanel_005f5(browse_jsp.java:2301)
   at org.apache.jsp.jsp.browse.browse_jsp._jspService(browse_jsp.java:832)
   at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
   at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
   at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
   at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
   at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:613)

I would be very glad to get some help; this seems to be quite deep in Alfresco where my flood lights fail!

Kaspar

hbf
Champ on-the-rise
Champ on-the-rise
Okay, it seems the problem was that my transaction in my (non-Web Client) webapp was closed in a rewinding and afterwards another call to the nodeService was made (without opening a transaction!).

This seems to cause the transaction of the Web Client to be used ("stolen") and resulted in the posted exception. Now that I only access the service when a transaction is open, everything works fine.

Thanks,
Kaspar

hbf
Champ on-the-rise
Champ on-the-rise
Sorry to come up with this again.

From time to time, I still get

Search failed due to system error: The transaction has already been marked for rollback

Can anybody explain where the origin for this might lie?

Thank you very much! I would be very glad to receive some help!

Kaspar