I have a cas management portal setup which connects to a mysql database to store its services. This seems to be working correctly for adding CAS Client services correctly, but fails if I attempt to add an OAuth2 or OIDC service.
Submitting the for through the user interface with either of these causes the server to immediately crash, with the following stack trace: cas | 2017-06-23 21:37:16,873 ERROR [org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler] - <Unexpected error occurred in scheduled task.> cas | java.lang.ArrayIndexOutOfBoundsException: 2367 cas | at com.mysql.cj.mysqla.MysqlaUtils.bitToLong(MysqlaUtils.java:68) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.core.io.MysqlTextValueDecoder.decodeBit(MysqlTextValueDecoder.java:237) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.mysqla.result.ResultSetRow.decodeAndCreateReturnValue(ResultSetRow.java:131) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.mysqla.result.ResultSetRow.getValueFromBytes(ResultSetRow.java:229) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.mysqla.result.TextBufferRow.getValue(TextBufferRow.java:122) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.jdbc.result.ResultSetImpl.getNonStringValueFromRow(ResultSetImpl.java:704) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.jdbc.result.ResultSetImpl.getBoolean(ResultSetImpl.java:795) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.mysql.cj.jdbc.result.ResultSetImpl.getBoolean(ResultSetImpl.java:799) ~[mysql-connector-java-6.0.3.jar:6.0.3] cas | at com.zaxxer.hikari.pool.HikariProxyResultSet.getBoolean(HikariProxyResultSet.java) ~[HikariCP-2.6.1.jar:?] cas | at org.hibernate.type.descriptor.sql.BooleanTypeDescriptor$2.doExtract(BooleanTypeDescriptor.java:59) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:260) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:256) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:246) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:332) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2844) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1741) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1667) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.getRow(Loader.java:1556) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:740) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.processResultSet(Loader.java:985) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.doQuery(Loader.java:943) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.doList(Loader.java:2615) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.doList(Loader.java:2598) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.Loader.list(Loader.java:2425) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:379) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1488) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.hibernate.query.Query.getResultList(Query.java:146) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] cas | at org.apereo.cas.services.JpaServiceRegistryDaoImpl.load(JpaServiceRegistryDaoImpl.java:38) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0] cas | at org.apereo.cas.services.JpaServiceRegistryDaoImpl$$FastClassBySpringCGLIB$$fcd53dc2.invoke(<generated>) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0] cas | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.apereo.cas.services.JpaServiceRegistryDaoImpl$$EnhancerBySpringCGLIB$$6707f85d.load(<generated>) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0] cas | at org.apereo.cas.services.DefaultServicesManager.load(DefaultServicesManager.java:142) ~[cas-server-core-services-5.1.0.jar:5.1.0] cas | at org.apereo.cas.services.DefaultServicesManager$$FastClassBySpringCGLIB$$1a4890a7.invoke(<generated>) ~[cas-server-core-services-5.1.0.jar:5.1.0] cas | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.apereo.cas.services.DefaultServicesManager$$EnhancerBySpringCGLIB$$e571bb4.load(<generated>) ~[cas-server-core-services-5.1.0.jar:5.1.0] cas | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] cas | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131] cas | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131] cas | at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131] cas | at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE] cas | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131] cas | at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_131] cas | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_131] cas | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_131] cas | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131] cas | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131] cas | at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] If I examine the database at this point, two entries will have been added in the RegexRegisteredService table. Restarting the server will cause it to crash again once it attempts to load the new records until I log into the database manually and delete them. management.propertied confd file is as follows: [management.properties] # CAS server that management app will authenticate with cas.server.prefix: https://{{getv "/cas/hostname"}} cas.server.name: https://{{getv "/cas/hostname"}} cas.mgmt.adminRoles=ROLE_ADMIN cas.mgmt.userPropertiesFile=file:/etc/cas/config/users.properties cas.mgmt.serverName=https://{{getv "/cas/hostname"}} spring.thymeleaf.mode=HTML logging.config=file:/etc/cas/config/log4j2-management.xml # Service Registry Settings cas.serviceRegistry.jpa.healthQuery: SELECT 1 FROM INFORMATION_SCHEMA.TABLES cas.serviceRegistry.jpa.url: jdbc:mysql://database:3306/cas_services cas.serviceRegistry.jpa.driverClass: com.mysql.cj.jdbc.Driver cas.serviceRegistry.jpa.user: cas cas.serviceRegistry.jpa.dialect: org.hibernate.dialect.MySQL5Dialect cas.serviceRegistry.jpa.password: {{getv "/service/registry/jpa/password"}} cas.serviceRegistry.jpa.ddlAuto: none -- - CAS gitter chatroom: https://gitter.im/apereo/cas - CAS mailing list guidelines: https://apereo.github.io/cas/Mailing-Lists.html - CAS documentation website: https://apereo.github.io/cas - CAS project website: https://github.com/apereo/cas --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/418ec582-81a4-43e2-8d17-ef8fc0e84e9d%40apereo.org.
