6.2.0 JPA Ticket delete errors

63 views
Skip to first unread message

Charl Thiem

unread,
Jul 6, 2020, 8:23:28 AM7/6/20
to cas-...@apereo.org
Hi

I'm using CAS 6.2.0 in an overlay project. with the following setup

  • JPA ticket store on MariaDB 10.3
  • Ticket cleaner configured
  • OICD, JPA and JWT tickets issuing configured
The errors I'm seeing in the logs are when the ticket cleaner tries to remove expired tickets from the database.

Sorry long stack incoming.....
2020-07-06 11:24:12,878 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM ServiceTicketImpl s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,879 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM OAuth20DefaultRefreshToken s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,879 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM OAuth20DefaultAccessToken s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,880 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM ProxyTicketImpl s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,880 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM OAuth20DefaultCode s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,880 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM TicketGrantingTicketImpl s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,880 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <Creating query [DELETE FROM TransientSessionTicketImpl s WHERE s.ticketGrantingTicket.id = :id]>
2020-07-06 11:24:12,881 TRACE [org.apereo.cas.ticket.registry.JpaTicketRegistry] - <org.hibernate.QueryException: could not resolve property: ticketGrantingTicket of: org.apereo.cas.ticket.TransientSessionTicketImpl [DELETE FROM org.apereo.cas.ticket.TransientSessionTicketImpl s WHERE s.ticketGrantingTicket.id = :id]>
java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: ticketGrantingTicket of: org.apereo.cas.ticket.TransientSessionTicketImpl [DELETE FROM org.apereo.cas.ticket.TransientSessionTicketImpl s WHERE s.ticketGrantingTicket.id = :id]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at jdk.internal.reflect.GeneratedMethodAccessor127.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:314) ~[spring-orm-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at com.sun.proxy.$Proxy237.createQuery(Unknown Source) ~[?:?]
at org.apereo.cas.ticket.registry.JpaTicketRegistry.lambda$deleteTicketGrantingTickets$6(JpaTicketRegistry.java:244) ~[cas-server-support-jpa-ticket-registry-6.2.0.jar!/:6.2.0]
at java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:212) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.IntPipeline.reduce(IntPipeline.java:491) ~[?:?]
at java.util.stream.IntPipeline.sum(IntPipeline.java:449) ~[?:?]
at org.apereo.cas.ticket.registry.JpaTicketRegistry.deleteTicketGrantingTickets(JpaTicketRegistry.java:252) ~[cas-server-support-jpa-ticket-registry-6.2.0.jar!/:6.2.0]
at org.apereo.cas.ticket.registry.JpaTicketRegistry.deleteSingleTicket(JpaTicketRegistry.java:210) ~[cas-server-support-jpa-ticket-registry-6.2.0.jar!/:6.2.0]
at org.apereo.cas.ticket.registry.AbstractTicketRegistry.deleteTicket(AbstractTicketRegistry.java:133) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at org.apereo.cas.ticket.registry.AbstractTicketRegistry$$FastClassBySpringCGLIB$$d3c67a11.invoke(<generated>) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.apereo.cas.ticket.registry.JpaTicketRegistry$$EnhancerBySpringCGLIB$$589bb926.deleteTicket(<generated>) ~[cas-server-support-jpa-ticket-registry-6.2.0.jar!/:6.2.0]
at jdk.internal.reflect.GeneratedMethodAccessor150.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.2.RELEASE.jar!/:2.2.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at com.sun.proxy.$Proxy158.deleteTicket(Unknown Source) ~[?:?]
at org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner.cleanTicket(DefaultTicketRegistryCleaner.java:82) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:212) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:?]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) ~[?:?]
at org.hibernate.query.spi.StreamDecorator.forEach(StreamDecorator.java:155) ~[hibernate-core-5.4.16.Final.jar!/:5.4.16.Final]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.IntPipeline.reduce(IntPipeline.java:491) ~[?:?]
at java.util.stream.IntPipeline.sum(IntPipeline.java:449) ~[?:?]
at org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner.cleanInternal(DefaultTicketRegistryCleaner.java:69) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner.clean(DefaultTicketRegistryCleaner.java:45) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner$$FastClassBySpringCGLIB$$29f046b2.invoke(<generated>) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) ~[spring-tx-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner$$EnhancerBySpringCGLIB$$d3411e42.clean(<generated>) ~[cas-server-core-tickets-api-6.2.0.jar!/:6.2.0]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.2.RELEASE.jar!/:2.2.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at com.sun.proxy.$Proxy242.clean(Unknown Source) ~[?:?]
at org.apereo.cas.config.CasCoreTicketsSchedulingConfiguration$TicketRegistryCleanerScheduler.run(CasCoreTicketsSchedulingConfiguration.java:101) ~[cas-server-core-tickets-6.2.0.jar!/:6.2.0]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: org.hibernate.QueryException: could not resolve property: ticketGrantingTicket of: org.apereo.cas.ticket.TransientSessionTicketImpl [DELETE FROM org.apereo.cas.ticket.TransientSessionTicketImpl s WHERE s.ticketGrantingTicket.id = :id]



I see the same error for
  • org.apereo.cas.ticket.TransientSessionTicketImpl
  • org.apereo.cas.ticket.device.OAuth20DefaultDeviceUserCode
The other types seem to delete fine.
I also get the same issue when trying to log out.

With this error on the front-end
Error: Exception thrown executing org.apereo.cas.web.flow.logout.TerminateSessionAction@e353e1d in state 'terminateSession' of flow 'logout' -- action execution attributes were 'map[[empty]]'

So the issue really is that the tickets are not getting removed from the database.

I see this method org.apereo.cas.ticket.registry.JpaTicketRegistry#deleteTicketGrantingTickets was changed quite a bit.

Any help would be appreciated.

Regards / Groete
Charl Thiem




See OpenCollab email disclaimer at http://www.opencollab.co.za/email-disclaimer
Reply all
Reply to author
Forward
0 new messages