[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-1696) EmptyStackException in Transaction.java

egor kolesnikov (JIRA) jira-events at lists.jboss.org
Mon Jun 30 02:53:31 EDT 2008


    [ http://jira.jboss.com/jira/browse/JBSEAM-1696?page=comments#action_12419314 ] 
            
egor kolesnikov commented on JBSEAM-1696:
-----------------------------------------

Gavin,

I just reproduced this bug. The very same exception appears after on each page when there's no database at all. It looks like SEAM tries to start managed transaction and fails to do so. After disabling seam-managed transactions, everything looks ok. 

I suppose that SEAM should give more descriptive error messages.

> EmptyStackException in Transaction.java
> ---------------------------------------
>
>                 Key: JBSEAM-1696
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1696
>             Project: Seam
>          Issue Type: Bug
>    Affects Versions: 2.0.0.BETA1
>         Environment: Seam cvs 20070717.1711
>            Reporter: Matt Drees
>         Assigned To: Gavin King
>            Priority: Minor
>             Fix For: 2.0.0.CR1
>
>         Attachments: transactionStackCheck.txt
>
>
> I occasionally get the following stacktrace.  I believe it happens when the SeamPhaseListener tries to begin a transaction, but an exception is thrown, so the stack is never pushed.  Later, when it tries to commitOrRollback, the following happens.
> 2007-07-18 15:29:55,229 ERROR () SeamPhaseListener: uncaught exception
> java.lang.IllegalStateException: Could not commit transaction
> 	at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:589)
> 	at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:325)
> 	at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:226)
> 	at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:184)
> 	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
> 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:82)
> 	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:61)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
> 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
> 	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
> 	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:149)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
> 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
> 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> 	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> 	at java.lang.Thread.run(Thread.java:595)
> Caused by: java.util.EmptyStackException
> 	at java.util.Stack.peek(Stack.java:79)
> 	at org.jboss.seam.transaction.Transaction.beforeCommit(Transaction.java:64)
> 	at org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:44)
> 	at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:579)
> You'd probably just need a simple "if (!synchronizations.isEmpty())" check before peek()ing or pop()ing.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list