062deda898
* Rewrite cache module in Kotlin. * Migrate RealStore to use new cache. * Migrate FileSystemImpl to use new cache. * Migrate StoreTest to new cache. * Remove Guava Cache. * Migrate remaining Java file to Kotlin. * Fix ktlint error. * Fix package. * Add support for CacheLoader. * Remove unnecessary mockito-inline. * Remove volatile keyword from CacheEntry fields and add docs re. cache entry reuse and thread-safty assumption. * - Refactor CacheBuilder. - Update docs. - Update Key, Value, Input, Output generic types to be bound by Any. - Replace spy with TestLoader for asserting invocation. * Support key-based synchronization for get(key: Key, loader: () -> Value): Value. * Document loader exception propagation. * Small clean ups. * Make CacheEntry's Key and Value bound to Any, move CacheEntry to RealCache.kt as a private class. * Add reference counting key-based synchronization for cache loader. * Improve KeyedSynchronizer and docs. * Refactor tests and add a missing test case to reach 100% coverage. * Add memory barrier after updating access time in cache entry. * Only process access queue if expiresAfterAccess == true. * Support configurable concurrency level. * Increase delay for concurrency test. * Explicitly set concurrency level for concurrency tests. * Only add memory barrier after recordRead if expiresAfterAccess is enabled. * Fix a potential memory leak caused by thread preemption. * Allow retries (3 times) for concurrency tests. * Move performMaintenance function to bottom of the class. * Fix typos, rename performMaintenance() to cleanUpDeadEntries(), improve docs. * Fix more typos. * Only remove entries in map but not in queue. * Replace memory barrier with @Volatile fields in CacheEntry. * Fix deadlock while iterating sets. * Remove stale cache/README.md, remove commented out java file. |
||
---|---|---|
.. | ||
src | ||
.gitignore | ||
build.gradle | ||
gradle.properties | ||
version.properties |