Feature #1044: Local data cacheing for java libclient
Modify libclient_java to support local data cacheing
#2 Updated by Matthew Jones over 12 years ago
- Category set to d1_libclient_java
- % Done changed from 0 to 100
- Milestone set to CCI-1.0.0
Implementation of the LocalCache (ticket #1044) for d1_libclient_java that provides a local memory and disk cache for objects retrieved from DataONE MemberNodes completed. Implementation uses the Java JCS system, which handles all of the heavy lifting. Objects are cached in memory up to a configurable limit, and then on disk up to another configurable limit. There is a new property 'D1Client.useLocalCache' that is checked when any D1Node is instantiated -- if true, then the local cache is utilized for get() calls, but if false then it is ignored and the service call is made regardless. SystemMetadata can also be cached, but because SystemMetadata is mutable, this is not done by default -- a specific method call needs to be made to cache SystemMetadata, and then it should only be done for short periods of time if determined appropriate by the application. By default SystemMetadata is not cached.
Unit tests were added to test the caching system locally. Tests need to be added to the integration test suite, but as that test suite has not been passing for months, I was unable to determine if the new features broke anything.