The system retrieves the tickets and calls expires on all of them to determine their eligibility to be cleaned up. Based on your local needs, you may be able to optimize that if you're only doing say timeout stuff, etc. But the general case is that we don't assume anything about the expiration policies.
You can also adjust the time you clean your registry from 83 minutes to say 60 minutes, etc. -Scott -Scott Battaglia PGP Public Key Id: 0x383733AA LinkedIn: http://www.linkedin.com/in/scottbattaglia On Mon, Oct 27, 2008 at 10:50 PM, Andrew Bruno <[EMAIL PROTECTED]>wrote: > Hello all, > > We are using DB persistance for TicketGrantingTIcket table, and have > managed to setup redundant load balanced servers successfully inc Single > Sign Out. > > During load testing we noticed a few spikes every 83 minutes (5,000,000 > msecs) or so. > > It appears that this query is being executed > > select ticketgran0_.ID as ID2_, ticketgran0_.NUMBER_OF_TIMES_USED as > NUMBER2_2_, ticketgran0_.CREATION_TIME as CREATION3_2_, > ticketgran0_.EXPIRATION_POLICY as EXPIRATION4_2_, > ticketgran0_.LAST_TIME_USED as LAST5_2_, > ticketgran0_.PREVIOUS_LAST_TIME_USED as PREVIOUS6_2_, > ticketgran0_.ticketGrantingTicket_ID as ticketG10_2_, > ticketgran0_.AUTHENTICATION as AUTHENTI7_2_, ticketgran0_.EXPIRED as > EXPIRED2_, ticketgran0_.SERVICES_GRANTED_ACCESS_TO as SERVICES9_2_ from > TICKETGRANTINGTICKET ticketgran0_ > > and there is no where clause. > > Looking through the code, I believe the culprit is > > > https://www.ja-sig.org/svn/cas3/tags/cas-3-2-2-rc1/cas-server-core/src/main/java/org/jasig/cas/ticket/registry/support/DefaultTicketRegistryCleaner.java > > i.e. the clean method: > > log > .info("Starting cleaning of expired tickets from ticket > registry at [" > + new Date() + "]"); > > --> GETS ALL TICKETS (returned 1500 rows in one of our tests) > > ticketsInCache = this.ticketRegistry.getTickets(); > > for (final Ticket ticket : ticketsInCache) { > if (ticket.isExpired()) { > ticketsToRemove.add(ticket); > } > } > > log.info(ticketsToRemove.size() > + " found to be removed. Removing now."); > > for (final Ticket ticket : ticketsToRemove) { > this.ticketRegistry.deleteTicket(ticket.getId()); > } > > log > .info("Finished cleaning of expired tickets from ticket > registry at [" > + new Date() + "]"); > > Is there any reason why we need to get all the tickets, and the loop > through them? > > If I was to write my own DB cleaner, how do I decide what the expiration > policy is? > > Is there more to it that meets the eye? > > Many thanks > Andrew > > > > > > > > > _______________________________________________ > Yale CAS mailing list > [email protected] > http://tp.its.yale.edu/mailman/listinfo/cas > >
_______________________________________________ Yale CAS mailing list [email protected] http://tp.its.yale.edu/mailman/listinfo/cas
