Is CAS 4.0-RC3 affected? Thanks, Jérôme
2014-03-20 21:13 GMT+01:00 Baron Fujimoto <[email protected]>: > 3.4.11 here, also using MySQL. > > -baron > > On Thu, Mar 20, 2014 at 03:30:37PM +0100, J?r?me LELEU wrote: > > > >Which CAS server version are we talking about? > > > >2014-03-20 7:16 GMT+01:00 Andrew Morgan <[email protected]>: > > > >> This is the same behavior I've seen in my own testing. When the MySQL > >> database backend is unavailable, CAS is also unavailable. > >> > >> Is there someone out there for whom CAS continues working when the > >> database is unavailable? > >> > >> On Wed, 19 Mar 2014, Baron Fujimoto wrote: > >> > >> I'm assuming config error, but am at a loss as to what specifically. > >>> > >>> The documentation notes on the availability of Services Management > >>> Application Database says, "If the Services Management Application > >>> database happens to be unavailable you will still be able to perform > >>> service authorization. CAS maintains an in-memory collection of > services > >>> that is periodically refreshed from the database. If the database is > >>> down, the periodic refresh process will fail. But the in-memory data > will > >>> continue to be available to support service authorization." > >>> > >>> <https://wiki.jasig.org/display/CASUM/Configuring#Configuring- > >>> NotesontheavailabilityofServicesManagementApplicationDatabase> > >>> > >>> However, we have reproducibly determined that when our services > managment > >>> database is unavailable, users see following error: > >>> > >>> === > >>> CAS is Unavailable > >>> > >>> There was an error trying to complete your request. Please notify your > >>> support desk or try again. > >>> === > >>> > >>> and I find this error in Tomcat's catalina.out logfile: > >>> > >>> === > >>> 2014-03-19 09:50:21,987 ERROR [org.quartz.core.ErrorLogger] - <Job > >>> (DEFAULT.serviceRegistryReloaderJobDetail threw an exception.> > >>> org.quartz.SchedulerException: Job threw an unhandled exception. [See > >>> nested exception: org.springframework.scheduling.quartz. > >>> JobMethodInvocationFailedException: Invocation of method 'reload' on > >>> target class [class com.sun.proxy.$Proxy27] failed; nested exception is > >>> org.springframework.dao.DataAccessResourceFailureException: Cannot open > >>> connection; nested exception is > org.hibernate.exception.JDBCConnectionException: > >>> Cannot open connection] > >>> at org.quartz.core.JobRunShell.run(JobRunShell.java:213) > >>> at org.quartz.simpl.SimpleThreadPool$WorkerThread. > >>> run(SimpleThreadPool.java:525) > >>> Caused by: org.springframework.scheduling.quartz. > >>> JobMethodInvocationFailedException: Invocation of method 'reload' on > >>> target class [class com.sun.proxy.$Proxy27] failed; nested exception is > >>> org.springframework.dao.DataAccessResourceFailureException: Cannot open > >>> connection; nested exception is > org.hibernate.exception.JDBCConnectionException: > >>> Cannot open connection > >>> [...] > >>> === > >>> > >>> I believe this is the relevant configuration from > >>> deployerConfigContext.xml: > >>> > >>> <!-- > >>> Define the Service Registry > >>> --> > >>> <bean id="serviceRegistryDao" class="org.jasig.cas.services. > >>> JpaServiceRegistryDaoImpl" > >>> p:entityManagerFactory-ref="entityManagerFactory" /> > >>> > >>> <!-- Persistent Service Registry: mysql --> > >>> <!-- This is the EntityManagerFactory configuration for Hibernate > --> > >>> <bean id="entityManagerFactory" class="org.springframework.orm.jpa. > >>> LocalContainerEntityManagerFactoryBean"> > >>> <property name="dataSource" ref="dataSource"/> > >>> <property name="jpaVendorAdapter"> > >>> <bean class="org.springframework.orm.jpa.vendor. > >>> HibernateJpaVendorAdapter"> > >>> <property name="generateDdl" value="true"/> > >>> <property name="showSql" value="true" /> > >>> </bean> > >>> </property> > >>> <property name="jpaProperties"> > >>> <props> > >>> <prop key="hibernate.dialect">${ > >>> database.hibernate.dialect}</prop> > >>> <prop key="hibernate.hbm2ddl.auto">update</prop> > >>> </props> > >>> </property> > >>> </bean> > >>> > >>> <bean id="transactionManager" class="org.springframework. > >>> orm.jpa.JpaTransactionManager"> > >>> <property name="entityManagerFactory" > ref="entityManagerFactory"/> > >>> </bean> > >>> > >>> <tx:annotation-driven transaction-manager="transactionManager"/> > >>> > >>> <bean > >>> id="dataSource" > >>> class="org.apache.commons.dbcp.BasicDataSource" > >>> p:driverClassName="com.mysql.jdbc.Driver" > >>> p:url="${service.registry.url}" > >>> p:username="${service.registry.username}" > >>> p:password="${service.registry.password}" /> > >>> === > >>> > >>> ${database.hibernate.dialect} is defined in cas.properties as: > >>> database.hibernate.dialect=org.hibernate.dialect.MySQLDialect > >>> > >>> and pom.xml contains: > >>> > >>> === > >>> <!-- Dependencies for database classes --> > >>> <!-- > >>> Apache Commons DBCP > >>> --> > >>> <dependency> > >>> <groupId>commons-dbcp</groupId> > >>> <artifactId>commons-dbcp</artifactId> > >>> <version>1.4</version> > >>> <scope>runtime</scope> > >>> </dependency> > >>> > >>> <!-- > >>> Hibernate Entities > >>> --> > >>> <dependency> > >>> <groupId>org.hibernate</groupId> > >>> <artifactId>hibernate-entitymanager</artifactId> > >>> <version>3.5.0-CR-2</version> > >>> </dependency> > >>> > >>> <!-- > >>> MySQL Connector > >>> --> > >>> <dependency> > >>> <groupId>mysql</groupId> > >>> <artifactId>mysql-connector-java</artifactId> > >>> <version>5.1.20</version> > >>> </dependency> > >>> > >>> <!-- End Dependencies for database jars --> > >>> === > > -- > Baron Fujimoto <[email protected]> :: UH Information Technology Services > minutas cantorum, minutas balorum, minutas carboratum desendus pantorum > > -- > You are currently subscribed to [email protected] as: > [email protected] > To unsubscribe, change settings or access archives, see > http://www.ja-sig.org/wiki/display/JSG/cas-user > -- You are currently subscribed to [email protected] as: [email protected] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user
