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.

Reply via email to