Hi,

We are getting a CAS ticket cleanup problem - the connection is closed. I have 
confirmed the JDBC connection pool settings and the pool manager will reclaim 
connections after 600 seconds so I suspect the database or network are at fault.

We are using the JPATicketRegistry across a TC cluster  - locking worked fine 
but when there are a large number of tickets to clean the connection closed 
issue occurs. Why does the CAS app need to take so long to clear down the 
ticketgranting table? Surely it can execute a delete from where SQL statement 
and use a predicate to determine if the ticket should be purged or not. Why the 
need to load into memory? This is a perf overhead IMO.

Any insight into this or if other have experienced similar problems - greatly 
appreciated
-- 
You are currently subscribed to cas-dev@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev
2013-10-25 16:58:07,432 ERROR 
[org.springframework.transaction.interceptor.TransactionInterceptor] - 
Application exception overridden by rollback exception
javax.persistence.PersistenceException: 
org.hibernate.exception.GenericJDBCException: Closed Connection: next
        at 
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1360)
        at 
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1288)
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:261)
        at 
org.jasig.cas.ticket.registry.JpaTicketRegistry.getTickets_aroundBody6(JpaTicketRegistry.java:145)
        at 
org.jasig.cas.ticket.registry.JpaTicketRegistry.getTickets_aroundBody7$advice(JpaTicketRegistry.java:57)
        at 
org.jasig.cas.ticket.registry.JpaTicketRegistry.getTickets(JpaTicketRegistry.java:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy52.getTickets(Unknown Source)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody0(DefaultTicketRegistryCleaner.java:94)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody1$advice(DefaultTicketRegistryCleaner.java:57)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
        at 
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
        at 
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at 
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: org.hibernate.exception.GenericJDBCException: Closed Connection: next
        at 
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
        at 
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
        at 
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
        at 
org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:108)
        at 
org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
        at com.sun.proxy.$Proxy63.next(Unknown Source)
        at org.hibernate.loader.Loader.doQuery(Loader.java:848)
        at 
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
        at org.hibernate.loader.Loader.doList(Loader.java:2447)
        at org.hibernate.loader.Loader.doList(Loader.java:2433)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263)
        at org.hibernate.loader.Loader.list(Loader.java:2258)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
        at 
org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
        at 
org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:196)
        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1161)
        at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:252)
        ... 26 more
Caused by: java.sql.SQLException: Closed Connection: next
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at 
oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:181)
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at 
org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:104)
        ... 40 more
2013-10-25 16:58:07,491 ERROR [org.quartz.core.JobRunShell] - Job 
DEFAULT.ticketRegistryCleanerJobDetail threw an unhandled Exception:
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: 
Invocation of method 'clean' on target class [class 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; 
nested exception is org.springframework.transaction.TransactionSystemException: 
Could not roll back JPA transaction; nested exception is 
javax.persistence.PersistenceException: unexpected error when rollbacking
        at 
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:320)
        at 
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at 
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: org.springframework.transaction.TransactionSystemException: Could 
not roll back JPA transaction; nested exception is 
javax.persistence.PersistenceException: unexpected error when rollbacking
        at 
org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:543)
        at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)
        at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822)
        at 
org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:411)
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy52.getTickets(Unknown Source)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody0(DefaultTicketRegistryCleaner.java:94)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody1$advice(DefaultTicketRegistryCleaner.java:57)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
        at 
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
        ... 3 more
Caused by: javax.persistence.PersistenceException: unexpected error when 
rollbacking
        at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:107)
        at 
org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:539)
        ... 19 more
Caused by: org.hibernate.TransactionException: rollback failed
        at 
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:215)
        at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:104)
        ... 20 more
Caused by: org.hibernate.TransactionException: unable to rollback against JDBC 
connection
        at 
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:167)
        at 
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
        ... 21 more
Caused by: java.sql.SQLException: Connection has already been closed.
        at 
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:117)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:140)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:58)
        at com.sun.proxy.$Proxy48.rollback(Unknown Source)
        at 
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)
        ... 22 more
2013-10-25 16:58:07,500 ERROR [org.quartz.core.ErrorLogger] - Job 
(DEFAULT.ticketRegistryCleanerJobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested 
exception: 
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: 
Invocation of method 'clean' on target class [class 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; 
nested exception is org.springframework.transaction.TransactionSystemException: 
Could not roll back JPA transaction; nested exception is 
javax.persistence.PersistenceException: unexpected error when rollbacking]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
        at 
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: 
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: 
Invocation of method 'clean' on target class [class 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; 
nested exception is org.springframework.transaction.TransactionSystemException: 
Could not roll back JPA transaction; nested exception is 
javax.persistence.PersistenceException: unexpected error when rollbacking
        at 
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:320)
        at 
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        ... 1 more
Caused by: org.springframework.transaction.TransactionSystemException: Could 
not roll back JPA transaction; nested exception is 
javax.persistence.PersistenceException: unexpected error when rollbacking
        at 
org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:543)
        at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)
        at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822)
        at 
org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:411)
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy52.getTickets(Unknown Source)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody0(DefaultTicketRegistryCleaner.java:94)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean_aroundBody1$advice(DefaultTicketRegistryCleaner.java:57)
        at 
org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
        at 
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
        ... 3 more
Caused by: javax.persistence.PersistenceException: unexpected error when 
rollbacking
        at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:107)
        at 
org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:539)
        ... 19 more
Caused by: org.hibernate.TransactionException: rollback failed
        at 
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:215)
        at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:104)
        ... 20 more
Caused by: org.hibernate.TransactionException: unable to rollback against JDBC 
connection
        at 
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:167)
        at 
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
        ... 21 more
Caused by: java.sql.SQLException: Connection has already been closed.
        at 
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:117)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:140)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
        at 
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at 
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:58)
        at com.sun.proxy.$Proxy48.rollback(Unknown Source)
        at 
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)
        ... 22 more
^C
[cas_pte@canux5711 cas-server]$ ^C
[cas_pte@canux5711 cas-server]$

Reply via email to