Hello
Using Mysql 5.5.x, Java 1.8.111, tomcat 8.5.x
Did overlay deployment of multiple versions to find the delta of failure.
cas 4.2.4 - deletes TGT tickets without causing an error
cas 4.2.5,4,2,6,6,2,7, all versions fail with message shown below.
Failure occurs at: cas-server-support-jpa-ticket-registry/src/main/java/org/jasig/cas/ticket/registry/JpaTicketRegistry.java, call entityManager.remove(ticket);
Looks similar to bug #1817, No EntityManager exception with JpaTicketRegistry, CAS 4.2.2, but not sure.
Did anyone encounter this issue and/or any other ideas how to proceed.
Many thanks.
From: cas-server-support-jpa-ticket-registry/src/main/java/org/jasig/cas/ticket/registry/JpaTicketRegistry.java
/**
* Removes the ticket.
*
* @param ticket the ticket
* @return true if ticket was removed
*/
public boolean removeTicket(final Ticket ticket) {
try {
if (logger.isDebugEnabled()) {
final Date creationDate = new Date(ticket.getCreationTime());
logger.debug("Removing Ticket [{}] created: {}", ticket, creationDate.toString());
}
entityManager.remove(ticket);
return true;
} catch (final Exception e) {
logger.error("Error removing {} from registry.", ticket, e);
}
return false;
}
2016-11-23 12:32:28,459 DEBUG [org.jasig.cas.ticket.registry.JpaTicketRegistry] - <Removing Ticket [TGT-**********************************************z7yiDDpiXv] created: Wed Nov 23 09:17:52 EST 2016>
2016-11-23 12:32:28,459 ERROR [org.jasig.cas.ticket.registry.JpaTicketRegistry] - <Error removing TGT-**********************************************z7yiDDpiXv from registry.>
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:278) ~[spring-orm-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at com.sun.proxy.$Proxy75.remove(Unknown Source) ~[?:?]
at org.jasig.cas.ticket.registry.JpaTicketRegistry.removeTicket(JpaTicketRegistry.java:89) ~[cas-server-support-jpa-ticket-registry-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.JpaTicketRegistry.deleteTicketsFromResultList(JpaTicketRegistry.java:211) ~[cas-server-support-jpa-ticket-registry-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.JpaTicketRegistry.deleteTicketGrantingTickets(JpaTicketRegistry.java:241) ~[cas-server-support-jpa-ticket-registry-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.JpaTicketRegistry.deleteSingleTicket(JpaTicketRegistry.java:167) ~[cas-server-support-jpa-ticket-registry-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.AbstractTicketRegistry.deleteTicket(AbstractTicketRegistry.java:98) ~[cas-server-core-tickets-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.AbstractTicketRegistry$$FastClassBySpringCGLIB$$b70f3271.invoke(<generated>) ~[cas-server-core-tickets-4.2.7.jar:4.2.7]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651) ~[spring-aop-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.jasig.cas.ticket.registry.JpaTicketRegistry$$EnhancerBySpringCGLIB$$b42f1b05.deleteTicket(<generated>) ~[cas-server-support-jpa-ticket-registry-4.2.7.jar:4.2.7]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) ~[spring-aop-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) ~[spring-aop-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at com.sun.proxy.$Proxy86.deleteTicket(Unknown Source) ~[?:?]
at org.jasig.cas.ticket.registry.TicketRegistryCleaner$1.apply(TicketRegistryCleaner.java:126) ~[cas-server-core-tickets-4.2.7.jar:4.2.7]
at org.jasig.cas.ticket.registry.TicketRegistryCleaner$1.apply(TicketRegistryCleaner.java:1) ~[cas-server-core-tickets-4.2.7.jar:4.2.7]
at com.google.common.collect.Iterators$8.transform(Iterators.java:799) ~[guava-18.0.jar:?]
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) ~[guava-18.0.jar:?]
at org.jasig.cas.ticket.registry.TicketRegistryCleaner.execute(TicketRegistryCleaner.java:139) ~[cas-server-core-tickets-4.2.7.jar:4.2.7]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:?]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ~[quartz-2.2.1.jar:?]
2016-11-23 12:32:28,460 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - <0 expired tickets found and removed.>
2016-11-23 12:33:20,851 DEBUG [org.jasig.cas.util.CasSpringBeanJobFactory] - <Created job org.jasig.cas.services.DefaultServicesManagerImpl$ServiceRegistry