We started with JPA ticket registry back in the 3.x days. Ran into the same
issue.
We moved to ehcache then to hazelcast.
We do about 300k (with Duo) logins per day. I would never recommend JPA
because of this exact issue.
-Bryan
University of Utah
On Fri, Oct 5, 2018 at 5:50 PM Trevor Fong wrote:
> Hi There,
>
> We've trying out CAS 5.2.4 in a clustered environment with the ticket
> registry in an Oracle 12c database. We've been seeing tons of persistent
> deadlock errors after a load test - you kill one locker and another
> deadlock springs up.
> Our DBA tells us that deadlocks were seen against the tables LOCKS,
> SERVICETICKET, TICKETGRANTINGTICKET
> Checking the catalina.out log, tons of messages like this:
>
> 2018-10-04 22:45:06,347 WARN
> [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQLState: 61000>
> 2018-10-04 22:45:06,347 ERROR
> [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - detected while waiting for resource
> >
> 2018-10-04 22:45:06,347 ERROR
> [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] -
> statement>
> javax.persistence.PersistenceException:
> org.hibernate.exception.LockAcquisitionException: could not execute
> statement
> at
> org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)
> ~[hibernate-core-5.2.13.Final.jar:5.2.13.Final]
> at
> org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
> ~[hibernate-core-5.2.13.Final.jar:5.2.13.Final]
> at
> org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1514)
> ~[hibernate-core-5.2.13.Final.jar:5.2.13.Final]
> at
> org.apereo.cas.ticket.registry.JpaTicketRegistry.deleteTicketGrantingTickets(JpaTicketRegistry.java:177)
> ~[cas-server-support-jpa-ticket-registry-5.2.4.jar:5.2.4]
> at
> org.apereo.cas.ticket.registry.JpaTicketRegistry.deleteSingleTicket(JpaTicketRegistry.java:145)
> ~[cas-server-support-jpa-ticket-registry-5.2.4.jar:5.2.4]
> at
> org.apereo.cas.ticket.registry.AbstractTicketRegistry.deleteTicket(AbstractTicketRegistry.java:126)
> ~[cas-server-core-tickets-5.2.4.jar:5.2.4]
> at
> org.apereo.cas.ticket.registry.AbstractTicketRegistry$$FastClassBySpringCGLIB$$d3c67a11.invoke()
> ~[cas-server-core-tickets-5.2.4.jar:5.2.4]
> at
> org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> ~[spring-core-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.apereo.cas.ticket.registry.JpaTicketRegistry$$EnhancerBySpringCGLIB$$45967896.deleteTicket()
> ~[cas-server-support-jpa-ticket-registry-5.2.4.jar:5.2.4]
> at sun.reflect.GeneratedMethodAccessor351.invoke(Unknown Source)
> ~[?:?]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_172]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_172]
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
> ~[spring-aop-4.3.16.RELEASE.jar:4.3.16.RELEASE]
> at com.sun.proxy.$Proxy104.deleteTicket(Unknown Source) ~[?:?]
> at
> org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner.cleanTicket(DefaultTicketRegistryCleaner.java:78)
> ~[cas-server-core-tickets-5.2.4.jar:5.2.4]
> at
> java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:210)
> ~[?:1.8.0_172]
> at
> java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
> ~[?:1.8.0_172]
> at java.util.Iterator.forEachRemaining(Iterator.java:116)
> ~[?:1.8.0_172]
> at
> java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
> ~[?:1.8.0_172]
> at
> java.util.stream.ReferencePipeli