Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Move ehcache jar into common/lib
    • Requires creating a new deployer in memory and adding in the in module to the project base POM
    • Also requires removing the old deployer from db/shared-deployer
    • Also requires putting backport-util-concurrent into common/lib
    • NOTE: Merging will require adjustments to some other projects because of this change
  • Changed memory service from abstract to normal class
  • Move the ehcache.xml file into api/src/java/ehcache.xml
    • Would be good to have one in sakai_home override this default one (might be a pipe dream though)
  • Remove dependency on EventTrackingService
    • This is because we want to get rid of event based cache invalidation
  • Remove use of ComponentManager static (makes testing impossible since we cannot simulate the entire CM)
    • Replaced this with use of application context to attempt to load cache beans by name
  • Switch from using lookup-method to setter injection
    • This revealed an issue with a circular dependency which was handled using spring lazy init
    • This also allows better ability to run tests
  • Remove the explicit garbage collection
    • This is recommended for ehcache, here is the current code
      Code Block
      java
      java
      	// run the garbage collector now
      	System.runFinalization();
      	System.gc();
      
  • Remove the use of multirefcache (only used in security service currently)
    • Deprecate the method for making a multirefcache (newMultiRefCache(String cacheName)(wink)
    • Cause methods that build the MRC to notify that it is deprecated
    • Fix the security service to simply invalidate its own entries (invalidation will propogate)
    • Then destroy the MRC and all related methods from memory service
    • NOTE: Merging will require adjustments to some other projects because of this change
  • Fix the CacheRefresher so it works outside of MRC
    • the refresh method of the refresher is not being called anymore UNLESS multi ref cache is being used (through getPayload() in MemCache (innerclass)). If we want to continue supporting the refresher (outside MRC) then I think it needs to be called in the various methods of MemCache as well
    • The code has now been updated to support it
  • Switch all keys over from Object to String (Ian Boston suggestion)
    • This requires changes (replace Object with String) to the memory interfaces and also changes to the NotificationCache (event-impl) and SiteCacheImpl (site-impl)
    • NOTE: Merging will require adjustments to some other projects because of this change
  • Deprecate the use of the "pattern" argument
    • This was only used to filter out event messages but we are getting rid of event based cache cleanup so this is not needed
  • Fix up API documentation so it all makes sense and is more accurate and understandable
    • Will be running this by a junior developer to ensure it is clear
  • Questions
    • What is org.sakaiproject.memory.MemoryService.mref_map for?
      • This is the secondary cache for keeping track of all the references related to the multiref cache
    • What is org.hibernate.cache.UpdateTimestampsCache doing?
      • This is one of the hibernate caches, recommend smaller default settings (from the ehcache and hibernate docs)
    • What is org.hibernate.cache.StandardQueryCache
      • This is the primary hibernate cache, recommend larger default settings (from the ehcache and hibernate docs)
    • Why is there a separate cache for the UDS? (org.sakaiproject.user.api.UserDirectoryService)

...