Page MenuHomePhabricator

Investigate CAS Session logout
Open, MediumPublic3 Estimated Story Points

Description

We have received reports that case sessions are being invalidated every 24 hours. This could be related to the recent CAS 6.3.1 updated and requires investigation

Mailing list post: https://groups.google.com/u/1/a/apereo.org/g/cas-user/c/MkpgAZZn-Mw

Event Timeline

jbond triaged this task as Medium priority.Thu, Feb 4, 11:05 AM
jbond created this task.

The following is from idp-test after updateing case in config

 <Remember me expiration policy is being configured based on hard timeout of [604800] seconds>
2021-02-04 11:50:49,536 DEBUG [org.apereo.cas.ticket.expiration.builder.TicketGrantingTicketExpirationPolicyBuilder] - <Ticket-granting ticket expiration policy is based on hard/idle timeouts of [604800]/[3600] seconds>
2021-02-04 11:50:49,536 DEBUG [org.apereo.cas.ticket.expiration.builder.TicketGrantingTicketExpirationPolicyBuilder] - <Final effective time-to-live of remember-me expiration policy is [604800] seconds>
2021-02-04 11:50:49,540 INFO [org.apereo.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN

After investigating i notice that even though spring has renamed config properties from camel case (myCoolProperty) to hyphen naming (my-cool-property) it seems old config parameters are silently remapped so this is not the issue. however i notice that when the service is restarted it is unable to retirve the old session from memcached and gives the following stack trace. This measn sessiones are invalidated on every tomcate restart.

likley culprit

Caused by: java.util.concurrent.ExecutionException: com.esotericsoftware.kryo.KryoException: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16

full

2021-02-04 12:01:33,806 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Failed fetching [TGT-1-*****2JZqAmMlII-idp-test1001] >
2021-02-04 12:01:33,808 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Exception waiting for value>
java.lang.RuntimeException: Exception waiting for value
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1236) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1256) ~[spymemcached-2.12.3.jar:2.12.3]
        at org.apereo.cas.ticket.registry.MemcachedTicketRegistry.getTicket(MemcachedTicketRegistry.java:96) ~[cas-server-support-memcached-ticket-registry-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:51) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:63) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy135.getTicket(Unknown Source) ~[?:?]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getTicketGrantingTicket(DefaultTicketRegistrySupport.java:45) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getAuthenticationFrom(DefaultTicketRegistrySupport.java:54) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getAuthenticatedPrincipalFrom(DefaultTicketRegistrySupport.java:60) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$FastClassBySpringCGLIB$$885171cb.invoke(<generated>) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$EnhancerBySpringCGLIB$$a738544c.getAuthenticatedPrincipalFrom(<generated>) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.logging.web.ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:94) ~[cas-server-core-logging-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:66) ~[inspektr-common-1.8.10.GA.jar:1.8.10.GA]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) ~[log4j-web-2.14.0.jar:2.14.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat9-util-9.0.31.jar:9.0.31]
        at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.util.concurrent.ExecutionException: com.esotericsoftware.kryo.KryoException: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:97) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 65 more
Caused by: com.esotericsoftware.kryo.KryoException: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at org.apereo.cas.memcached.kryo.CasKryoTranscoder.decode(CasKryoTranscoder.java:74) ~[cas-server-support-memcached-core-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy254.decode(Unknown Source) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$1.call(TranscodeService.java:63) ~[spymemcached-2.12.3.jar:2.12.3]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.run(TranscodeService.java:110) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:96) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 65 more
Caused by: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$EnumSerializer.read(DefaultSerializers.java:411) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$EnumSerializer.read(DefaultSerializers.java:378) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:732) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:125) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:124) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:813) ~[kryo-5.0.2.jar:?]
        at org.apereo.cas.memcached.kryo.CasKryoTranscoder.decode(CasKryoTranscoder.java:72) ~[cas-server-support-memcached-core-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy254.decode(Unknown Source) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$1.call(TranscodeService.java:63) ~[spymemcached-2.12.3.jar:2.12.3]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.run(TranscodeService.java:110) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:96) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 65 more
2021-02-04 12:01:34,131 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Failed fetching [TGT-1-*****2JZqAmMlII-idp-test1001] >
2021-02-04 12:01:34,132 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Exception waiting for value>
java.lang.RuntimeException: Exception waiting for value
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1236) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1256) ~[spymemcached-2.12.3.jar:2.12.3]
        at org.apereo.cas.ticket.registry.MemcachedTicketRegistry.getTicket(MemcachedTicketRegistry.java:96) ~[cas-server-support-memcached-ticket-registry-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:51) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:63) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy135.getTicket(Unknown Source) ~[?:?]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getTicketGrantingTicket(DefaultTicketRegistrySupport.java:45) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$FastClassBySpringCGLIB$$885171cb.invoke(<generated>) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$EnhancerBySpringCGLIB$$a738544c.getTicketGrantingTicket(<generated>) ~[cas-server-core-tickets-api-6.3.1.jar:6.3.1]
        at org.apereo.cas.web.flow.login.InitialFlowSetupAction.configureWebflowForTicketGrantingTicket(InitialFlowSetupAction.java:90) ~[cas-server-support-actions-6.3.1.jar:6.3.1]
        at org.apereo.cas.web.flow.login.InitialFlowSetupAction.doExecute(InitialFlowSetupAction.java:73) ~[cas-server-support-actions-6.3.1.jar:6.3.1]
        at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy273.execute(Unknown Source) ~[?:?]
        at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.ActionList.execute(ActionList.java:154) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.Flow.start(Flow.java:526) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:368) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:223) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:139) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy296.launchExecution(Unknown Source) ~[?:?]
        at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:264) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat9-servlet-api-9.0.31.jar:?]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat9-servlet-api-9.0.31.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat9-websocket-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.AuthenticationCredentialsThreadLocalBinderClearingFilter.doFilter(AuthenticationCredentialsThreadLocalBinderClearingFilter.java:28) ~[cas-server-core-web-api-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.RequestParameterPolicyEnforcementFilter.doFilter(RequestParameterPolicyEnforcementFilter.java:401) ~[cas-server-core-web-api-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.ResponseHeadersEnforcementFilter.doFilter(ResponseHeadersEnforcementFilter.java:200) ~[cas-server-core-web-api-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.AddResponseHeadersFilter.doFilter(AddResponseHeadersFilter.java:64) ~[cas-server-core-web-api-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:92) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.invokeWithWrappedRequest(DebugFilter.java:90) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.java:78) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.java:67) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93) ~[spring-boot-actuator-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.logging.web.ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:99) ~[cas-server-core-logging-6.3.1.jar:6.3.1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:66) ~[inspektr-common-1.8.10.GA.jar:1.8.10.GA]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119) ~[spring-boot-2.3.7.RELEASE.jar:2.3.7.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) ~[log4j-web-2.14.0.jar:2.14.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat9-util-9.0.31.jar:9.0.31]
        at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.util.concurrent.ExecutionException: com.esotericsoftware.kryo.KryoException: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:97) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 143 more
Caused by: com.esotericsoftware.kryo.KryoException: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at org.apereo.cas.memcached.kryo.CasKryoTranscoder.decode(CasKryoTranscoder.java:74) ~[cas-server-support-memcached-core-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy254.decode(Unknown Source) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$1.call(TranscodeService.java:63) ~[spymemcached-2.12.3.jar:2.12.3]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.run(TranscodeService.java:110) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:96) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 143 more
Caused by: com.esotericsoftware.kryo.KryoException: Invalid ordinal for enum "org.apereo.cas.validation.ValidationResponseType": 16
Serialization trace:
clock (org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy)
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$EnumSerializer.read(DefaultSerializers.java:411) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$EnumSerializer.read(DefaultSerializers.java:378) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:732) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:125) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:124) ~[kryo-5.0.2.jar:?]
        at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:813) ~[kryo-5.0.2.jar:?]
        at org.apereo.cas.memcached.kryo.CasKryoTranscoder.decode(CasKryoTranscoder.java:72) ~[cas-server-support-memcached-core-6.3.1.jar:6.3.1]
        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.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.12.RELEASE.jar:5.2.12.RELEASE]
        at com.sun.proxy.$Proxy254.decode(Unknown Source) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$1.call(TranscodeService.java:63) ~[spymemcached-2.12.3.jar:2.12.3]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at net.spy.memcached.transcoders.TranscodeService$Task.run(TranscodeService.java:110) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.transcoders.TranscodeService$Task.get(TranscodeService.java:96) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.internal.GetFuture.get(GetFuture.java:70) ~[spymemcached-2.12.3.jar:2.12.3]
        at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1229) ~[spymemcached-2.12.3.jar:2.12.3]
        ... 143 more

Change 661713 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] apereo_cas: rename config properties

https://gerrit.wikimedia.org/r/661713

Mentioned in SAL (#wikimedia-operations) [2021-02-04T13:10:31Z] <jbond42> upload cas_6.2.7 to downgrade cas T273867

Change 661721 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/software/cas-overlay-template@master] 6.4.0-RC1: test to see if issue is still present

https://gerrit.wikimedia.org/r/661721

This appears to be a regression related to the KRYO serialisation. As far as i can tell it only has issues after a restart. Early musing wonder if there is some nonce initiated on startup?. For now i have downgraded cas to 6.2.7 which appears to work and will debug on idp-test.

Simlar issue with 6.4.0-RC1

java.lang.ClassCastException: class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)
 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)>
ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Failed fetching [TGT-2-*****QFIOFbxGko-idp-test1001] >
2021-02-04 14:03:52,617 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)>
java.lang.ClassCastException: class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)
        at org.apereo.cas.ticket.registry.MemcachedTicketRegistry.getTicket(MemcachedTicketRegistry.java:96) ~[cas-server-support-memcached-ticket-registry-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:50) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:62) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        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.3.3.jar:5.3.3]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:490) ~[spring-cloud-context-3.0.1.jar:3.0.1]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.3.jar:5.3.3]
        at com.sun.proxy.$Proxy138.getTicket(Unknown Source) ~[?:?]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getTicketGrantingTicket(DefaultTicketRegistrySupport.java:45) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getAuthenticationFrom(DefaultTicketRegistrySupport.java:54) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getAuthenticatedPrincipalFrom(DefaultTicketRegistrySupport.java:60) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$FastClassBySpringCGLIB$$885171cb.invoke(<generated>) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$EnhancerBySpringCGLIB$$c8a92130.getAuthenticatedPrincipalFrom(<generated>) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.logging.web.ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:94) ~[cas-server-core-logging-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:66) ~[inspektr-common-1.8.14.GA.jar:1.8.14.GA]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) ~[log4j-web-2.14.0.jar:2.14.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat9-util-9.0.31.jar:9.0.31]
        at java.lang.Thread.run(Thread.java:834) [?:?]
2021-02-04 14:03:52,831 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <Failed fetching [TGT-2-*****QFIOFbxGko-idp-test1001] >
2021-02-04 14:03:52,831 ERROR [org.apereo.cas.ticket.registry.MemcachedTicketRegistry] - <class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)>
java.lang.ClassCastException: class org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult cannot be cast to class org.apereo.cas.ticket.Ticket (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult and org.apereo.cas.ticket.Ticket are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9)
        at org.apereo.cas.ticket.registry.MemcachedTicketRegistry.getTicket(MemcachedTicketRegistry.java:96) ~[cas-server-support-memcached-ticket-registry-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:50) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.AbstractTicketRegistry.getTicket(AbstractTicketRegistry.java:62) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        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.3.3.jar:5.3.3]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:490) ~[spring-cloud-context-3.0.1.jar:3.0.1]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.3.jar:5.3.3]
        at com.sun.proxy.$Proxy138.getTicket(Unknown Source) ~[?:?]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport.getTicketGrantingTicket(DefaultTicketRegistrySupport.java:45) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$FastClassBySpringCGLIB$$885171cb.invoke(<generated>) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.apereo.cas.ticket.registry.DefaultTicketRegistrySupport$$EnhancerBySpringCGLIB$$c8a92130.getTicketGrantingTicket(<generated>) ~[cas-server-core-tickets-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.web.flow.login.InitialFlowSetupAction.configureWebflowForTicketGrantingTicket(InitialFlowSetupAction.java:90) ~[cas-server-support-actions-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apereo.cas.web.flow.login.InitialFlowSetupAction.doExecute(InitialFlowSetupAction.java:73) ~[cas-server-support-actions-6.4.0-RC1.jar:6.4.0-RC1]
        at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        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.3.3.jar:5.3.3]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:490) ~[spring-cloud-context-3.0.1.jar:3.0.1]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.3.jar:5.3.3]
        at com.sun.proxy.$Proxy280.execute(Unknown Source) ~[?:?]
        at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.ActionList.execute(ActionList.java:154) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.Flow.start(Flow.java:526) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:368) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:223) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:139) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        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.3.3.jar:5.3.3]
        at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:490) ~[spring-cloud-context-3.0.1.jar:3.0.1]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.3.jar:5.3.3]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.3.jar:5.3.3]
        at com.sun.proxy.$Proxy303.launchExecution(Unknown Source) ~[?:?]
        at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:264) ~[spring-webflow-2.5.1.RELEASE.jar:2.5.1.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.3.jar:5.3.3]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat9-servlet-api-9.0.31.jar:?]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat9-servlet-api-9.0.31.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat9-websocket-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.AuthenticationCredentialsThreadLocalBinderClearingFilter.doFilter(AuthenticationCredentialsThreadLocalBinderClearingFilter.java:28) ~[cas-server-core-web-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.RequestParameterPolicyEnforcementFilter.doFilter(RequestParameterPolicyEnforcementFilter.java:401) ~[cas-server-core-web-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.ResponseHeadersEnforcementFilter.doFilter(ResponseHeadersEnforcementFilter.java:200) ~[cas-server-core-web-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.web.support.filters.AddResponseHeadersFilter.doFilter(AddResponseHeadersFilter.java:64) ~[cas-server-core-web-api-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.invokeWithWrappedRequest(DebugFilter.java:90) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.java:78) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.java:67) ~[spring-security-web-5.4.2.jar:5.4.2]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93) ~[spring-boot-actuator-2.4.2.jar:2.4.2]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.cas.logging.web.ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:99) ~[cas-server-core-logging-6.4.0-RC1.jar:6.4.0-RC1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apereo.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:66) ~[inspektr-common-1.8.14.GA.jar:1.8.14.GA]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119) ~[spring-boot-2.4.2.jar:2.4.2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) ~[log4j-web-2.14.0.jar:2.14.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat9-catalina-9.0.31.jar:9.0.31]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat9-coyote-9.0.31.jar:9.0.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat9-util-9.0.31.jar:9.0.31]
        at java.lang.Thread.run(Thread.java:834) [?:?]

Testing different transcoders shows this is only an issue with KYRO:

cas eversiontranscoderstatus
6.3.1KRYOfail
6.4.0-RC1KRYOfail
6.4.0-RC1SERIALworks
6.3.1SERIALworks
6.4.0-RC1WHALINworks
6.3.1WHALINworks
6.4.0-RC1WHALINV1works
6.3.1WHALINV1works

git diff v6.2.7..v6.3.0-RC3 support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo
(github kept crashing)

diff --git a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CasKryoPool.java b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CasKryoPool.java
index aab104bb449..eb4f8a5ce75 100644
--- a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CasKryoPool.java
+++ b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CasKryoPool.java
@@ -16,17 +16,12 @@ import java.util.Collection;
  */
 public class CasKryoPool implements KryoPool {
 
-
     private final KryoPool kryoPoolRef;
 
     public CasKryoPool() {
         this(new ArrayList<>(0), true, true, false, false);
     }
 
-    public CasKryoPool(final Collection<Class> classesToRegister) {
-        this(classesToRegister, true, true, false, false);
-    }
-
     public CasKryoPool(final Collection<Class> classesToRegister,
                        final boolean warnUnregisteredClasses,
                        final boolean registrationRequired,
diff --git a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CloseableKryoFactory.java b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CloseableKryoFactory.java
index 1f4db86536d..9f3da6a93a8 100644
--- a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CloseableKryoFactory.java
+++ b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/CloseableKryoFactory.java
@@ -1,98 +1,11 @@
 package org.apereo.cas.memcached.kryo;
 
-import org.apereo.cas.DefaultMessageDescriptor;
-import org.apereo.cas.authentication.AttributeMergingStrategy;
-import org.apereo.cas.authentication.DefaultAuthentication;
-import org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult;
-import org.apereo.cas.authentication.PreventedException;
-import org.apereo.cas.authentication.PrincipalException;
-import org.apereo.cas.authentication.credential.BasicIdentifiableCredential;
-import org.apereo.cas.authentication.credential.HttpBasedServiceCredential;
-import org.apereo.cas.authentication.credential.OneTimePasswordCredential;
-import org.apereo.cas.authentication.credential.RememberMeUsernamePasswordCredential;
-import org.apereo.cas.authentication.credential.UsernamePasswordCredential;
-import org.apereo.cas.authentication.exceptions.AccountDisabledException;
-import org.apereo.cas.authentication.exceptions.InvalidLoginLocationException;
-import org.apereo.cas.authentication.exceptions.InvalidLoginTimeException;
-import org.apereo.cas.authentication.exceptions.MixedPrincipalException;
-import org.apereo.cas.authentication.metadata.BasicCredentialMetaData;
-import org.apereo.cas.authentication.principal.DefaultPrincipalAttributesRepository;
-import org.apereo.cas.authentication.principal.ShibbolethCompatiblePersistentIdGenerator;
-import org.apereo.cas.authentication.principal.SimplePrincipal;
-import org.apereo.cas.authentication.principal.SimpleWebApplicationServiceImpl;
-import org.apereo.cas.authentication.principal.cache.CachingPrincipalAttributesRepository;
-import org.apereo.cas.authentication.support.password.PasswordExpiringWarningMessageDescriptor;
 import org.apereo.cas.memcached.kryo.serial.ImmutableNativeJavaListSerializer;
+import org.apereo.cas.memcached.kryo.serial.ImmutableNativeJavaMapSerializer;
 import org.apereo.cas.memcached.kryo.serial.ImmutableNativeJavaSetSerializer;
-import org.apereo.cas.memcached.kryo.serial.RegisteredServiceSerializer;
-import org.apereo.cas.memcached.kryo.serial.SimpleWebApplicationServiceSerializer;
 import org.apereo.cas.memcached.kryo.serial.ThrowableSerializer;
 import org.apereo.cas.memcached.kryo.serial.URLSerializer;
 import org.apereo.cas.memcached.kryo.serial.ZonedDateTimeSerializer;
-import org.apereo.cas.services.AllAuthenticationHandlersRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.AllowedAuthenticationHandlersRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.AnonymousRegisteredServiceUsernameAttributeProvider;
-import org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.ChainingAttributeReleasePolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceAcceptableUsagePolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy;
-import org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceContact;
-import org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceExpirationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceMultifactorPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceProperty;
-import org.apereo.cas.services.DefaultRegisteredServiceProxyTicketExpirationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceServiceTicketExpirationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceUsernameProvider;
-import org.apereo.cas.services.DenyAllAttributeReleasePolicy;
-import org.apereo.cas.services.GroovyRegisteredServiceAccessStrategy;
-import org.apereo.cas.services.GroovyRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.GroovyRegisteredServiceMultifactorPolicy;
-import org.apereo.cas.services.GroovyRegisteredServiceUsernameProvider;
-import org.apereo.cas.services.GroovyScriptAttributeReleasePolicy;
-import org.apereo.cas.services.NotPreventedRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider;
-import org.apereo.cas.services.RefuseRegisteredServiceProxyPolicy;
-import org.apereo.cas.services.RegexMatchingRegisteredServiceProxyPolicy;
-import org.apereo.cas.services.RegexRegisteredService;
-import org.apereo.cas.services.RegisteredServiceLogoutType;
-import org.apereo.cas.services.RegisteredServiceMultifactorPolicyFailureModes;
-import org.apereo.cas.services.RegisteredServicePublicKeyImpl;
-import org.apereo.cas.services.RemoteEndpointServiceAccessStrategy;
-import org.apereo.cas.services.RestfulRegisteredServiceAuthenticationPolicyCriteria;
-import org.apereo.cas.services.ReturnAllAttributeReleasePolicy;
-import org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy;
-import org.apereo.cas.services.ReturnMappedAttributeReleasePolicy;
-import org.apereo.cas.services.ReturnRestfulAttributeReleasePolicy;
-import org.apereo.cas.services.ScriptedRegisteredServiceAttributeReleasePolicy;
-import org.apereo.cas.services.ScriptedRegisteredServiceUsernameProvider;
-import org.apereo.cas.services.TimeBasedRegisteredServiceAccessStrategy;
-import org.apereo.cas.services.UnauthorizedServiceException;
-import org.apereo.cas.services.UnauthorizedServiceForPrincipalException;
-import org.apereo.cas.services.UnauthorizedSsoServiceException;
-import org.apereo.cas.services.consent.DefaultRegisteredServiceConsentPolicy;
-import org.apereo.cas.services.support.RegisteredServiceChainingAttributeFilter;
-import org.apereo.cas.services.support.RegisteredServiceMappedRegexAttributeFilter;
-import org.apereo.cas.services.support.RegisteredServiceRegexAttributeFilter;
-import org.apereo.cas.services.support.RegisteredServiceScriptedAttributeFilter;
-import org.apereo.cas.ticket.ProxyGrantingTicketImpl;
-import org.apereo.cas.ticket.ProxyTicketImpl;
-import org.apereo.cas.ticket.ServiceTicketImpl;
-import org.apereo.cas.ticket.TicketGrantingTicketImpl;
-import org.apereo.cas.ticket.TransientSessionTicketImpl;
-import org.apereo.cas.ticket.expiration.AlwaysExpiresExpirationPolicy;
-import org.apereo.cas.ticket.expiration.BaseDelegatingExpirationPolicy;
-import org.apereo.cas.ticket.expiration.HardTimeoutExpirationPolicy;
-import org.apereo.cas.ticket.expiration.MultiTimeUseOrTimeoutExpirationPolicy;
-import org.apereo.cas.ticket.expiration.NeverExpiresExpirationPolicy;
-import org.apereo.cas.ticket.expiration.RememberMeDelegatingExpirationPolicy;
-import org.apereo.cas.ticket.expiration.ThrottledUseAndTimeoutExpirationPolicy;
-import org.apereo.cas.ticket.expiration.TicketGrantingTicketExpirationPolicy;
-import org.apereo.cas.ticket.expiration.TimeoutExpirationPolicy;
-import org.apereo.cas.ticket.registry.EncodedTicket;
-import org.apereo.cas.util.crypto.PublicKeyFactoryBean;
-import org.apereo.cas.validation.ValidationResponseType;
 
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.pool.KryoFactory;
@@ -124,8 +37,6 @@ import org.joda.time.DateTime;
 import org.joda.time.LocalDateTime;
 import org.objenesis.strategy.StdInstantiatorStrategy;
 
-import javax.security.auth.login.AccountExpiredException;
-import javax.security.auth.login.AccountLockedException;
 import javax.security.auth.login.AccountNotFoundException;
 import java.net.URI;
 import java.net.URL;
@@ -195,23 +106,8 @@ public class CloseableKryoFactory implements KryoFactory {
         LOGGER.debug("replaceObjectsByReferences: [{}]", this.replaceObjectsByReferences);
         LOGGER.debug("registrationRequired: [{}]", this.registrationRequired);
 
-        registerCasAuthenticationWithKryo(kryo);
-        registerExpirationPoliciesWithKryo(kryo);
-        registerCasTicketsWithKryo(kryo);
         registerNativeJdkComponentsWithKryo(kryo);
-        registerCasServicesWithKryo(kryo);
-        registerCasServicesAttributeFiltersWithKryo(kryo);
-        registerCasServicesUsernameAttributeProvidersWithKryo(kryo);
-        registerCasServicesAccessStrategyWithKryo(kryo);
         registerImmutableOrEmptyCollectionsWithKryo(kryo);
-        registerCasServicesProxyPolicyWithKryo(kryo);
-        registerExceptionsWithKryo(kryo);
-        registerMessageDescriptorsWithKryo(kryo);
-        registerCasServicesPrincipalAttributeRepositoryWithKryo(kryo);
-        registerCasServicesMultifactorPolicyWithKryo(kryo);
-        registerCasServicesConsentPolicyWithKryo(kryo);
-        registerCasServicesAttributeReleasePolicyWithKryo(kryo);
-        registerCasServicesAuthenticationPolicy(kryo);
 
         classesToRegister.forEach(c -> {
             LOGGER.trace("Registering serializable class [{}] with Kryo", c.getName());
@@ -221,24 +117,27 @@ public class CloseableKryoFactory implements KryoFactory {
     }
 
     private static void registerImmutableOrEmptyCollectionsWithKryo(final Kryo kryo) {
-        LOGGER.debug("Registering immutable/empty collections with Kryo");
+        LOGGER.trace("Registering immutable/empty collections with Kryo");
 
         UnmodifiableCollectionsSerializer.registerSerializers(kryo);
 
         ImmutableListSerializer.registerSerializers(kryo);
         kryo.register(List.of().getClass(), new ImmutableNativeJavaListSerializer());
+        kryo.register(List.class, new ImmutableNativeJavaListSerializer());
         kryo.register(List.of("1", "2").getClass(), new ImmutableNativeJavaListSerializer());
         kryo.register(List.of("1", "2", "3", "4").getClass(), new ImmutableNativeJavaListSerializer());
 
         ImmutableSetSerializer.registerSerializers(kryo);
         kryo.register(Set.of().getClass(), new ImmutableNativeJavaSetSerializer());
+        kryo.register(Set.class, new ImmutableNativeJavaSetSerializer());
         kryo.register(Set.of("1", "2").getClass(), new ImmutableNativeJavaSetSerializer());
         kryo.register(Set.of("1", "2", "3", "4").getClass(), new ImmutableNativeJavaSetSerializer());
 
         ImmutableMapSerializer.registerSerializers(kryo);
-        kryo.register(Map.of().getClass(), new ImmutableMapSerializer());
-        kryo.register(Map.of("1", "2").getClass(), new ImmutableMapSerializer());
-        kryo.register(Map.of("1", "2", "3", "4", "5", "6").getClass(), new ImmutableMapSerializer());
+        kryo.register(Map.of().getClass(), new ImmutableNativeJavaMapSerializer());
+        kryo.register(Map.class, new ImmutableNativeJavaMapSerializer());
+        kryo.register(Map.of("1", "2").getClass(), new ImmutableNativeJavaMapSerializer());
+        kryo.register(Map.of("1", "2", "3", "4", "5", "6").getClass(), new ImmutableNativeJavaMapSerializer());
 
         ImmutableMultimapSerializer.registerSerializers(kryo);
 
@@ -263,117 +162,10 @@ public class CloseableKryoFactory implements KryoFactory {
         kryo.register(list.getClass(), new ArraysAsListSerializer());
     }
 
-    private static void registerCasServicesWithKryo(final Kryo kryo) {
-        kryo.register(RegexRegisteredService.class, new RegisteredServiceSerializer());
-        kryo.register(RegisteredServiceLogoutType.class);
-        kryo.register(RegisteredServicePublicKeyImpl.class);
-        kryo.register(DefaultRegisteredServiceContact.class);
-        kryo.register(DefaultRegisteredServiceProperty.class);
-        kryo.register(DefaultRegisteredServiceDelegatedAuthenticationPolicy.class);
-        kryo.register(DefaultRegisteredServiceExpirationPolicy.class);
-        kryo.register(DefaultRegisteredServiceServiceTicketExpirationPolicy.class);
-        kryo.register(DefaultRegisteredServiceProxyTicketExpirationPolicy.class);
-        kryo.register(DefaultRegisteredServiceDelegatedAuthenticationPolicy.class);
-        kryo.register(DefaultRegisteredServiceAcceptableUsagePolicy.class);
-        kryo.register(DefaultRegisteredServiceAuthenticationPolicy.class);
-        kryo.register(ShibbolethCompatiblePersistentIdGenerator.class);
-    }
-
-    private static void registerCasServicesProxyPolicyWithKryo(final Kryo kryo) {
-        kryo.register(RegexMatchingRegisteredServiceProxyPolicy.class);
-        kryo.register(RefuseRegisteredServiceProxyPolicy.class);
-    }
-
-    private static void registerCasServicesAccessStrategyWithKryo(final Kryo kryo) {
-        kryo.register(DefaultRegisteredServiceAccessStrategy.class);
-        kryo.register(GroovyRegisteredServiceAccessStrategy.class);
-        kryo.register(RemoteEndpointServiceAccessStrategy.class);
-        kryo.register(TimeBasedRegisteredServiceAccessStrategy.class);
-    }
-
-    private static void registerCasServicesUsernameAttributeProvidersWithKryo(final Kryo kryo) {
-        kryo.register(PrincipalAttributeRegisteredServiceUsernameProvider.class);
-        kryo.register(AnonymousRegisteredServiceUsernameAttributeProvider.class);
-        kryo.register(GroovyRegisteredServiceUsernameProvider.class);
-        kryo.register(DefaultRegisteredServiceUsernameProvider.class);
-        kryo.register(ScriptedRegisteredServiceUsernameProvider.class);
-    }
-
-    private static void registerCasServicesAttributeFiltersWithKryo(final Kryo kryo) {
-        kryo.register(RegisteredServiceRegexAttributeFilter.class);
-        kryo.register(RegisteredServiceChainingAttributeFilter.class);
-        kryo.register(RegisteredServiceMappedRegexAttributeFilter.class);
-        kryo.register(RegisteredServiceScriptedAttributeFilter.class);
-    }
-
-    private static void registerCasAuthenticationWithKryo(final Kryo kryo) {
-        kryo.register(SimpleWebApplicationServiceImpl.class, new SimpleWebApplicationServiceSerializer());
-        kryo.register(BasicCredentialMetaData.class);
-        kryo.register(BasicIdentifiableCredential.class);
-        kryo.register(DefaultAuthenticationHandlerExecutionResult.class);
-        kryo.register(DefaultAuthentication.class);
-        kryo.register(UsernamePasswordCredential.class);
-        kryo.register(RememberMeUsernamePasswordCredential.class);
-        kryo.register(SimplePrincipal.class);
-        kryo.register(HttpBasedServiceCredential.class);
-        kryo.register(OneTimePasswordCredential.class);
-        kryo.register(PublicKeyFactoryBean.class);
-        kryo.register(ValidationResponseType.class);
-    }
-
-    private static void registerCasServicesAttributeReleasePolicyWithKryo(final Kryo kryo) {
-        kryo.register(ChainingAttributeReleasePolicy.class);
-        kryo.register(DenyAllAttributeReleasePolicy.class);
-        kryo.register(ReturnAllowedAttributeReleasePolicy.class);
-        kryo.register(ReturnAllAttributeReleasePolicy.class);
-        kryo.register(ReturnMappedAttributeReleasePolicy.class);
-        kryo.register(GroovyScriptAttributeReleasePolicy.class);
-        kryo.register(ScriptedRegisteredServiceAttributeReleasePolicy.class);
-        kryo.register(ReturnRestfulAttributeReleasePolicy.class);
-    }
-
-    private static void registerCasServicesConsentPolicyWithKryo(final Kryo kryo) {
-        kryo.register(DefaultRegisteredServiceConsentPolicy.class);
-    }
-
-    private static void registerCasServicesMultifactorPolicyWithKryo(final Kryo kryo) {
-        kryo.register(DefaultRegisteredServiceMultifactorPolicy.class);
-        kryo.register(GroovyRegisteredServiceMultifactorPolicy.class);
-        kryo.register(RegisteredServiceMultifactorPolicyFailureModes.class);
-    }
-
-    private static void registerCasServicesPrincipalAttributeRepositoryWithKryo(final Kryo kryo) {
-        kryo.register(CachingPrincipalAttributesRepository.class);
-        kryo.register(DefaultPrincipalAttributesRepository.class);
-        kryo.register(AttributeMergingStrategy.class);
-    }
-
-    private static void registerExceptionsWithKryo(final Kryo kryo) {
+    private static void registerNativeJdkComponentsWithKryo(final Kryo kryo) {
         kryo.register(GeneralSecurityException.class, new ThrowableSerializer());
-        kryo.register(PreventedException.class);
         kryo.register(AccountNotFoundException.class, new ThrowableSerializer());
-        kryo.register(AccountDisabledException.class);
-        kryo.register(AccountExpiredException.class);
-        kryo.register(AccountLockedException.class);
-        kryo.register(InvalidLoginLocationException.class);
-        kryo.register(InvalidLoginTimeException.class);
-        kryo.register(PrincipalException.class);
-        kryo.register(MixedPrincipalException.class);
-        kryo.register(UnauthorizedServiceException.class);
-        kryo.register(UnauthorizedServiceForPrincipalException.class);
-        kryo.register(UnauthorizedSsoServiceException.class);
-    }
-
-    private static void registerCasTicketsWithKryo(final Kryo kryo) {
-        kryo.register(TicketGrantingTicketImpl.class);
-        kryo.register(ServiceTicketImpl.class);
-        kryo.register(ProxyGrantingTicketImpl.class);
-        kryo.register(ProxyTicketImpl.class);
-        kryo.register(EncodedTicket.class);
-        kryo.register(TransientSessionTicketImpl.class);
-    }
 
-    private static void registerNativeJdkComponentsWithKryo(final Kryo kryo) {
         kryo.register(Class.class, new DefaultSerializers.ClassSerializer());
         kryo.register(ArrayList.class);
         kryo.register(LinkedList.class);
@@ -414,32 +206,4 @@ public class CloseableKryoFactory implements KryoFactory {
         kryo.register(ZoneOffset.class);
         kryo.register(EnumSet.class, new EnumSetSerializer());
     }
-
-    private static void registerExpirationPoliciesWithKryo(final Kryo kryo) {
-        kryo.register(MultiTimeUseOrTimeoutExpirationPolicy.class);
-        kryo.register(MultiTimeUseOrTimeoutExpirationPolicy.ServiceTicketExpirationPolicy.class);
-        kryo.register(MultiTimeUseOrTimeoutExpirationPolicy.ProxyTicketExpirationPolicy.class);
-        kryo.register(NeverExpiresExpirationPolicy.class);
-        kryo.register(RememberMeDelegatingExpirationPolicy.class);
-        kryo.register(TimeoutExpirationPolicy.class);
-        kryo.register(HardTimeoutExpirationPolicy.class);
-        kryo.register(AlwaysExpiresExpirationPolicy.class);
-        kryo.register(ThrottledUseAndTimeoutExpirationPolicy.class);
-        kryo.register(TicketGrantingTicketExpirationPolicy.class);
-        kryo.register(BaseDelegatingExpirationPolicy.class);
-    }
-
-    private static void registerMessageDescriptorsWithKryo(final CloseableKryo kryo) {
-        kryo.register(DefaultMessageDescriptor.class);
-        kryo.register(PasswordExpiringWarningMessageDescriptor.class);
-    }
-
-    private static void registerCasServicesAuthenticationPolicy(final CloseableKryo kryo) {
-        kryo.register(AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria.class);
-        kryo.register(AllAuthenticationHandlersRegisteredServiceAuthenticationPolicyCriteria.class);
-        kryo.register(AllowedAuthenticationHandlersRegisteredServiceAuthenticationPolicyCriteria.class);
-        kryo.register(GroovyRegisteredServiceAuthenticationPolicyCriteria.class);
-        kryo.register(NotPreventedRegisteredServiceAuthenticationPolicyCriteria.class);
-        kryo.register(RestfulRegisteredServiceAuthenticationPolicyCriteria.class);
-    }
 }
diff --git a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/RegisteredServiceSerializer.java b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/RegisteredServiceSerializer.java
deleted file mode 100644
index 45a3b4a4398..00000000000
--- a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/RegisteredServiceSerializer.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.apereo.cas.memcached.kryo.serial;
-
-import org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy;
-import org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceMultifactorPolicy;
-import org.apereo.cas.services.DefaultRegisteredServiceUsernameProvider;
-import org.apereo.cas.services.RefuseRegisteredServiceProxyPolicy;
-import org.apereo.cas.services.RegexRegisteredService;
-import org.apereo.cas.services.RegisteredService;
-import org.apereo.cas.services.RegisteredServiceAccessStrategy;
-import org.apereo.cas.services.RegisteredServiceAttributeReleasePolicy;
-import org.apereo.cas.services.RegisteredServiceAuthenticationPolicy;
-import org.apereo.cas.services.RegisteredServiceLogoutType;
-import org.apereo.cas.services.RegisteredServiceMultifactorPolicy;
-import org.apereo.cas.services.RegisteredServiceProxyPolicy;
-import org.apereo.cas.services.RegisteredServicePublicKey;
-import org.apereo.cas.services.RegisteredServicePublicKeyImpl;
-import org.apereo.cas.services.RegisteredServiceUsernameAttributeProvider;
-import org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.Serializer;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import lombok.SneakyThrows;
-import lombok.val;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * Serializer for {@link RegisteredService} instances.
- *
- * @author Misagh Moayyed
- * @since 4.1.0
- */
-public class RegisteredServiceSerializer extends Serializer<RegisteredService> {
-
-    /**
-     * In case the url object is null in the service,
-     * we need to be able to return a default/mock url.
-     *
-     * @return mock url
-     */
-    @SneakyThrows
-    private static URL getEmptyUrl() {
-        return new URL("https://");
-    }
-
-    /**
-     * Write object by reflection.
-     *
-     * @param kryo   the kryo
-     * @param output the output
-     * @param obj    the obj
-     */
-    private static void writeObjectByReflection(final Kryo kryo, final Output output, final Object obj) {
-        val className = obj.getClass().getCanonicalName();
-        kryo.writeObject(output, className);
-        kryo.writeObject(output, obj);
-    }
-
-    /**
-     * Read object by reflection.
-     *
-     * @param <T>   the type parameter
-     * @param kryo  the kryo
-     * @param input the input
-     * @param clazz the clazz
-     * @return the t
-     */
-    @SneakyThrows
-    private static <T> T readObjectByReflection(final Kryo kryo, final Input input, final Class<T> clazz) {
-        val className = kryo.readObject(input, String.class);
-        val foundClass = (Class<T>) Class.forName(className);
-        val result = kryo.readObject(input, foundClass);
-
-        if (!clazz.isAssignableFrom(result.getClass())) {
-            throw new ClassCastException("Result [" + result
-                + " is of type " + result.getClass()
-                + " when we were expecting " + clazz);
-        }
-        return result;
-    }
-
-    @Override
-    public void write(final Kryo kryo, final Output output, final RegisteredService service) {
-        kryo.writeObject(output, service.getServiceId());
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getName(), StringUtils.EMPTY));
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getDescription(), StringUtils.EMPTY));
-        kryo.writeObject(output, service.getId());
-        kryo.writeObject(output, service.getEvaluationOrder());
-        kryo.writeObject(output, ObjectUtils.defaultIfNull(service.getLogo(), getEmptyUrl()));
-        kryo.writeObject(output, service.getLogoutType());
-        kryo.writeObject(output, ObjectUtils.defaultIfNull(service.getLogoutUrl(), StringUtils.EMPTY));
-        
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getTheme(), StringUtils.EMPTY));
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getResponseType(), StringUtils.EMPTY));
-
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getPublicKey(), new RegisteredServicePublicKeyImpl()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getProxyPolicy(), new RefuseRegisteredServiceProxyPolicy()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getAttributeReleasePolicy(), new ReturnAllowedAttributeReleasePolicy()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getUsernameAttributeProvider(), new DefaultRegisteredServiceUsernameProvider()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getAccessStrategy(), new DefaultRegisteredServiceAccessStrategy()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getMultifactorPolicy(), new DefaultRegisteredServiceMultifactorPolicy()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getAuthenticationPolicy(), new DefaultRegisteredServiceAuthenticationPolicy()));
-        writeObjectByReflection(kryo, output, ObjectUtils.defaultIfNull(service.getContacts(), new ArrayList<>(0)));
-
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getInformationUrl(), StringUtils.EMPTY));
-        kryo.writeObject(output, StringUtils.defaultIfEmpty(service.getPrivacyUrl(), StringUtils.EMPTY));
-        kryo.writeObject(output, new HashMap<>(service.getProperties()));
-    }
-
-    @Override
-    public RegisteredService read(final Kryo kryo, final Input input, final Class<RegisteredService> type) {
-        val svc = new RegexRegisteredService();
-        svc.setServiceId(kryo.readObject(input, String.class));
-        svc.setName(kryo.readObject(input, String.class));
-        svc.setDescription(kryo.readObject(input, String.class));
-        svc.setId(kryo.readObject(input, Long.class));
-        svc.setEvaluationOrder(kryo.readObject(input, Integer.class));
-        svc.setLogo(kryo.readObject(input, String.class));
-        svc.setLogoutType(kryo.readObject(input, RegisteredServiceLogoutType.class));
-        svc.setLogoutUrl(kryo.readObject(input, String.class));
-       
-        svc.setTheme(kryo.readObject(input, String.class));
-        svc.setResponseType(StringUtils.defaultIfBlank(kryo.readObject(input, String.class), null));
-
-        svc.setPublicKey(readObjectByReflection(kryo, input, RegisteredServicePublicKey.class));
-        svc.setProxyPolicy(readObjectByReflection(kryo, input, RegisteredServiceProxyPolicy.class));
-        svc.setAttributeReleasePolicy(readObjectByReflection(kryo, input, RegisteredServiceAttributeReleasePolicy.class));
-        svc.setUsernameAttributeProvider(readObjectByReflection(kryo, input, RegisteredServiceUsernameAttributeProvider.class));
-        svc.setAccessStrategy(readObjectByReflection(kryo, input, RegisteredServiceAccessStrategy.class));
-        svc.setMultifactorPolicy(readObjectByReflection(kryo, input, RegisteredServiceMultifactorPolicy.class));
-        svc.setAuthenticationPolicy(readObjectByReflection(kryo, input, RegisteredServiceAuthenticationPolicy.class));
-        svc.setContacts(readObjectByReflection(kryo, input, List.class));
-
-        svc.setInformationUrl(StringUtils.defaultIfBlank(kryo.readObject(input, String.class), null));
-        svc.setPrivacyUrl(StringUtils.defaultIfBlank(kryo.readObject(input, String.class), null));
-        svc.setProperties(kryo.readObject(input, HashMap.class));
-        return svc;
-    }
-}
diff --git a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/SimpleWebApplicationServiceSerializer.java b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/SimpleWebApplicationServiceSerializer.java
deleted file mode 100644
index 2c5e81f1f74..00000000000
--- a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/SimpleWebApplicationServiceSerializer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apereo.cas.memcached.kryo.serial;
-
-import org.apereo.cas.authentication.principal.SimpleWebApplicationServiceImpl;
-import org.apereo.cas.authentication.principal.WebApplicationServiceFactory;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.Serializer;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import lombok.val;
-
-/**
- * Serializer for {@link SimpleWebApplicationServiceImpl} class.
- *
- * @author Marvin S. Addison
- * @since 3.0.0
- */
-public class SimpleWebApplicationServiceSerializer extends Serializer<SimpleWebApplicationServiceImpl> {
-
-    @Override
-    public void write(final Kryo kryo, final Output output, final SimpleWebApplicationServiceImpl service) {
-        kryo.writeObject(output, service.getId());
-    }
-
-    @Override
-    public SimpleWebApplicationServiceImpl read(final Kryo kryo, final Input input, final Class<SimpleWebApplicationServiceImpl> type) {
-        val id = kryo.readObject(input, String.class);
-        return new WebApplicationServiceFactory().createService(id, SimpleWebApplicationServiceImpl.class);
-    }
-}
diff --git a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/ThrowableSerializer.java b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/ThrowableSerializer.java
index 728f513d188..8349d792c6a 100644
--- a/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/ThrowableSerializer.java
+++ b/support/cas-server-support-memcached-core/src/main/java/org/apereo/cas/memcached/kryo/serial/ThrowableSerializer.java
@@ -1,5 +1,7 @@
 package org.apereo.cas.memcached.kryo.serial;
 
+import org.apereo.cas.util.LoggingUtils;
+
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.Serializer;
 import com.esotericsoftware.kryo.io.Input;
@@ -31,7 +33,7 @@ public class ThrowableSerializer extends Serializer<Throwable> {
             val msg = kryo.readObject(input, String.class);
             return (Throwable) clazz.getDeclaredConstructor(String.class).newInstance(msg);
         } catch (final Exception e) {
-            LOGGER.error(e.getMessage(), e);
+            LoggingUtils.error(LOGGER, e);
         }
         return new Throwable();
     }

Testing different transcoders shows this is only an issue with KYRO:

cas eversiontranscoderstatus
6.3.1KRYOfail
6.4.0-RC1KRYOfail
6.4.0-RC1SERIALworks
6.3.1SERIALworks
6.4.0-RC1WHALINworks
6.3.1WHALINworks
6.4.0-RC1WHALINV1works
6.3.1WHALINV1works

@elukey this is probably CAS or java specific but just in case i wonder if you know what the difference between theses transcoders are?

Thanks @jbond. However, I still get logged out from places like tendril, several times per day - today I think I got logged out twice already :-(
Icinga though seems to be working better today

Thanks @jbond. However, I still get logged out from places like tendril, several times per day - today I think I got logged out twice already :-(
Icinga though seems to be working better today

from the logs it looks like you are not ticking the rember me box. By design the session will only be valid for one hour or with the session which ever comes up first unless one ticks remember me

sudo grep -A5 'WHO: Marostegui' /var/log/cas/cas.log
WHO: Marostegui
WHAT: Supplied credentials: [RememberMeUsernamePasswordCredential(super=UsernamePasswordCredential(username=Marostegui, source=null, customFields={}), rememberMe=false)]
ACTION: AUTHENTICATION_SUCCESS
APPLICATION: CAS
WHEN: Fri Feb 05 06:26:13 UTC 2021

We see this about every hour give our take

WHO: Marostegui
WHAT: Supplied credentials: [RememberMeUsernamePasswordCredential(super=UsernamePasswordCredential(username=Marostegui, source=null, customFields={}), rememberMe=false)]
ACTION: AUTHENTICATION_SUCCESS
APPLICATION: CAS
WHEN: Fri Feb 05 10:28:28 UTC 2021

mmm, maybe it is a different browser. I will check!
Thanks

@jbond About Kryo - from what I see in Kryo src:

 	/** Registers the class using the lowest, next available integer ID and the {@link Kryo#getDefaultSerializer(Class) default
	 * serializer}. If the class is already registered, no change will be made and the existing registration will be returned.
	 * Registering a primitive also affects the corresponding primitive wrapper.
	 * <p>
	 * Because the ID assigned is affected by the IDs registered before it, the order classes are registered is important when
	 * using this method. The order must be the same at deserialization as it was for serialization. */

public Registration register (Class type) {

order of registering classes is important to Kryo and the change in registered classes affected that. If you want to use the same state, new registered classes have to be added at the end (or with a specific id)
In general, Kryo isn't really good for a model evolution - we have similiar issues with it in WDQS streaming updater. I can't unfortunately speak about other serializers, since I'm not sure what those names represent.

@Zbyszko Thanks for looking into this its really appreciated

we have similiar issues with it in WDQS streaming updater

is it refering to Kyro here? i had thought that was a apereo cas specific thing . if its more general that's useful to know.

can't unfortunately speak about other serializers, since I'm not sure what those names represent.

I think theses are more generic memcached serialises. i can run some tests to see what difference this makes on the value blob

Other then switching serialises where you able to spot any obvious places in the code where a fix may be applied. Failing this do you have an idea of how much effort it would take to create a unit test to reproduce this error. This would allow use to send a more substantial report upstream.

@Zbyszko Thanks for looking into this its really appreciated

we have similiar issues with it in WDQS streaming updater

is it refering to Kyro here? i had thought that was a apereo cas specific thing . if its more general that's useful to know.

Yeah, it's about Kryo - although a bit different issue than here from what I see.

can't unfortunately speak about other serializers, since I'm not sure what those names represent.

I think theses are more generic memcached serialises. i can run some tests to see what difference this makes on the value blob

Other then switching serialises where you able to spot any obvious places in the code where a fix may be applied. Failing this do you have an idea of how much effort it would take to create a unit test to reproduce this error. This would allow use to send a more substantial report upstream.

I'd try to reorganize register() methods on kryo - so that new ones are after the old ones. I'm not deep enough to understand the full issue here - but from looking a bit further, exception correlates with the javadoc I posted from the source code.

I'd try to reorganize register() methods on kryo - so that new ones are after the old ones. I'm not deep enough to understand the full issue here - but from looking a bit further, exception correlates with the javadoc I posted from the source code.

@Zbyszko Thanks for the effort ill send this upstream <3

I'd try to reorganize register() methods on kryo - so that new ones are after the old ones. I'm not deep enough to understand the full issue here - but from looking a bit further, exception correlates with the javadoc I posted from the source code.

@Zbyszko Thanks for the effort ill send this upstream <3

You're welcome! Let me know if there's something here, especially Java related, I can help with.

Removing discovery-search, if you need our help again, please ping us!