Background: We had a bad LOCKS table definition for our Oracle JPA Ticket 
Registry and were getting the TIMESTAMP cast exception. We fixed that problem 
by doing a "table alter" while CAS was running and restarted CAS (3 instances 
restarted in succession). Now I am getting this message: 
[org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] - <Could 
not obtain lock.  Aborting cleanup.>

My ticket registry now has 2.7 million rows and growing.

We are running CAS server 3.4.5 with 3 CAS instances behind a load balancer. 
All 3 have the same cas.properties:


cas.securityContext.serviceProperties.service=https://go.utah.edu/cas/services/j_acegi_cas_security_check
# Names of roles allowed to access the CAS service manager
cas.securityContext.serviceProperties.adminRoles=ROLE_ADMIN

cas.securityContext.casProcessingFilterEntryPoint.loginUrl=https://go.utah.edu/cas/login
cas.securityContext.ticketValidator.casServerUrlPrefix=https://go.utah.edu/cas

cas.themeResolver.defaultThemeName=default
cas.viewResolver.basename=default_views

host.name=cas
ticket.cleaner.database.platform=SQL92

#database.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
#database.hibernate.dialect=org.hibernate.dialect.MySQLDialect
#database.hibernate.dialect=org.hibernate.dialect.HSQLDialect

My ticket registry xml looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:p="http://www.springframework.org/schema/p";
  xmlns:tx="http://www.springframework.org/schema/tx";
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>

  <!-- Ticket Registry -->
  <bean id="ticketRegistry" 
class="org.jasig.cas.ticket.registry.JpaTicketRegistry">
    <constructor-arg index="0" ref="entityManagerFactory" />
  </bean>


  <!-- TICKET REGISTRY CLEANER -->
  <bean id="ticketRegistryCleaner"
    class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner"
    p:ticketRegistry-ref="ticketRegistry"
    p:lock-ref="cleanerLock"
  />

  <bean id="cleanerLock"
    class="org.jasig.cas.ticket.registry.support.JdbcLockingStrategy"
    p:uniqueId="${host.name}"
    p:platform="${ticket.cleaner.database.platform}"
    p:applicationId="cas-ticket-registry-cleaner"
    p:dataSource-ref="dataSource"
  />

  <bean id="ticketRegistryCleanerJobDetail"
    
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
    p:targetObject-ref="ticketRegistryCleaner"
    p:targetMethod="clean"
  />

  <bean id="periodicTicketRegistryCleanerTrigger"
    class="org.springframework.scheduling.quartz.SimpleTriggerBean"
    p:jobDetail-ref="ticketRegistryCleanerJobDetail"
    p:startDelay="20000"
    p:repeatInterval="1800000"
  />

</beans>

Any ideas?

Thanks,

Bryan

-- 
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

Reply via email to