This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new 2b8fc0c488 deprecates lru block cache and makes TinyLfu the new
default (#4920)
2b8fc0c488 is described below
commit 2b8fc0c488504f257405b4708bf5e96624678410
Author: Keith Turner <[email protected]>
AuthorDate: Mon Sep 23 13:22:36 2024 -0400
deprecates lru block cache and makes TinyLfu the new default (#4920)
If the TinyLfu cache works well as the default going forward then the
LRU cache could eventually be dropped.
---
core/src/main/java/org/apache/accumulo/core/conf/Property.java | 8 +++-----
.../core/file/blockfile/cache/lru/LruBlockCacheManager.java | 2 ++
.../core/file/blockfile/cache/BlockCacheFactoryTest.java | 1 +
.../accumulo/core/file/blockfile/cache/TestLruBlockCache.java | 1 +
.../org/apache/accumulo/core/file/rfile/AbstractRFileTest.java | 10 +++++-----
.../java/org/apache/accumulo/core/file/rfile/RFileTest.java | 4 ++--
6 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 88975feb2c..eb2ffbfd6d 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@ -30,6 +30,7 @@ import java.util.function.Predicate;
import org.apache.accumulo.core.classloader.ClassLoaderUtil;
import org.apache.accumulo.core.data.constraints.NoDeleteConstraint;
+import
org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager;
import org.apache.accumulo.core.file.rfile.RFile;
import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
import org.apache.accumulo.core.iteratorsImpl.system.DeletingIterator;
@@ -504,11 +505,8 @@ public enum Property {
"Time to wait for clients to continue scans before closing a session.",
"1.3.5"),
TSERV_DEFAULT_BLOCKSIZE("tserver.default.blocksize", "1M",
PropertyType.BYTES,
"Specifies a default blocksize for the tserver caches.", "1.3.5"),
- TSERV_CACHE_MANAGER_IMPL("tserver.cache.manager.class",
-
"org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager",
PropertyType.STRING,
- "Specifies the class name of the block cache factory implementation."
- + " Alternative implementation is"
- + "
org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager.",
+ TSERV_CACHE_MANAGER_IMPL("tserver.cache.manager.class",
TinyLfuBlockCacheManager.class.getName(),
+ PropertyType.STRING, "Specifies the class name of the block cache
factory implementation.",
"2.0.0"),
TSERV_DATACACHE_SIZE("tserver.cache.data.size", "10%", PropertyType.MEMORY,
"Specifies the size of the cache for RFile data blocks.", "1.3.5"),
diff --git
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCacheManager.java
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCacheManager.java
index a4132b7d75..76be394e3b 100644
---
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCacheManager.java
+++
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCacheManager.java
@@ -24,6 +24,7 @@ import org.apache.accumulo.core.spi.cache.CacheType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@Deprecated(since = "3.1.0")
public class LruBlockCacheManager extends BlockCacheManager {
private static final Logger LOG =
LoggerFactory.getLogger(LruBlockCacheManager.class);
@@ -32,6 +33,7 @@ public class LruBlockCacheManager extends BlockCacheManager {
protected BlockCache createCache(Configuration conf, CacheType type) {
LruBlockCacheConfiguration cc = new LruBlockCacheConfiguration(conf, type);
LOG.info("Creating {} cache with configuration {}", type, cc);
+ LOG.warn("This cache implementation is deprecated and will be remove in
future releases.");
return new LruBlockCache(cc);
}
diff --git
a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
index 1cbfbd289f..8338d2735a 100644
---
a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
+++
b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
@@ -34,6 +34,7 @@ import org.junit.jupiter.api.Test;
public class BlockCacheFactoryTest {
@Test
+ @SuppressWarnings("deprecation")
public void testCreateLruBlockCacheFactory() throws Exception {
DefaultConfiguration dc = DefaultConfiguration.getInstance();
ConfigurationCopy cc = new ConfigurationCopy(dc);
diff --git
a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
index bf814e0e4d..e12dacfe71 100644
---
a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
+++
b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
@@ -49,6 +49,7 @@ import org.junit.jupiter.api.Test;
* Tests will ensure it grows and shrinks in size properly, evictions run when
they're supposed to
* and do what they should, and that cached blocks are accessible when
expected to be.
*/
+@SuppressWarnings("deprecation")
public class TestLruBlockCache {
@Test
diff --git
a/core/src/test/java/org/apache/accumulo/core/file/rfile/AbstractRFileTest.java
b/core/src/test/java/org/apache/accumulo/core/file/rfile/AbstractRFileTest.java
index a5fc04a854..d65991590a 100644
---
a/core/src/test/java/org/apache/accumulo/core/file/rfile/AbstractRFileTest.java
+++
b/core/src/test/java/org/apache/accumulo/core/file/rfile/AbstractRFileTest.java
@@ -44,8 +44,7 @@ import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.file.FileSKVIterator;
import
org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheConfiguration;
import
org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheManagerFactory;
-import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCache;
-import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager;
+import
org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager;
import org.apache.accumulo.core.file.blockfile.impl.BasicCacheProvider;
import
org.apache.accumulo.core.file.blockfile.impl.CachableBlockFile.CachableBuilder;
import org.apache.accumulo.core.file.rfile.RFile.FencedReader;
@@ -56,6 +55,7 @@ import
org.apache.accumulo.core.iterators.SortedKeyValueIterator;
import
org.apache.accumulo.core.iteratorsImpl.system.ColumnFamilySkippingIterator;
import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
import org.apache.accumulo.core.sample.impl.SamplerFactory;
+import org.apache.accumulo.core.spi.cache.BlockCache;
import org.apache.accumulo.core.spi.cache.BlockCacheManager;
import org.apache.accumulo.core.spi.cache.CacheType;
import org.apache.accumulo.core.spi.crypto.CryptoEnvironment;
@@ -164,7 +164,7 @@ public abstract class AbstractRFileTest {
DefaultConfiguration dc = DefaultConfiguration.getInstance();
ConfigurationCopy cc = new ConfigurationCopy(dc);
- cc.set(Property.TSERV_CACHE_MANAGER_IMPL,
LruBlockCacheManager.class.getName());
+ cc.set(Property.TSERV_CACHE_MANAGER_IMPL,
TinyLfuBlockCacheManager.class.getName());
try {
manager = BlockCacheManagerFactory.getInstance(cc);
} catch (ReflectiveOperationException e) {
@@ -174,8 +174,8 @@ public abstract class AbstractRFileTest {
cc.set(Property.TSERV_DATACACHE_SIZE, Long.toString(100000000));
cc.set(Property.TSERV_INDEXCACHE_SIZE, Long.toString(100000000));
manager.start(BlockCacheConfiguration.forTabletServer(cc));
- LruBlockCache indexCache = (LruBlockCache)
manager.getBlockCache(CacheType.INDEX);
- LruBlockCache dataCache = (LruBlockCache)
manager.getBlockCache(CacheType.DATA);
+ BlockCache indexCache = manager.getBlockCache(CacheType.INDEX);
+ BlockCache dataCache = manager.getBlockCache(CacheType.DATA);
CryptoService cs =
CryptoFactoryLoader.getServiceForClient(CryptoEnvironment.Scope.TABLE,
accumuloConfiguration.getAllCryptoProperties());
diff --git
a/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
b/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
index 36533596dc..81c76d58ff 100644
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
@@ -64,7 +64,7 @@ import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.file.FileSKVIterator;
import
org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheConfiguration;
import
org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheManagerFactory;
-import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager;
+import
org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager;
import org.apache.accumulo.core.file.blockfile.impl.BasicCacheProvider;
import
org.apache.accumulo.core.file.blockfile.impl.CachableBlockFile.CachableBuilder;
import org.apache.accumulo.core.file.rfile.RFile.Reader;
@@ -1584,7 +1584,7 @@ public class RFileTest extends AbstractRFileTest {
byte[] data = baos.toByteArray();
SeekableByteArrayInputStream bais = new SeekableByteArrayInputStream(data);
FSDataInputStream in2 = new FSDataInputStream(bais);
- aconf.set(Property.TSERV_CACHE_MANAGER_IMPL,
LruBlockCacheManager.class.getName());
+ aconf.set(Property.TSERV_CACHE_MANAGER_IMPL,
TinyLfuBlockCacheManager.class.getName());
aconf.set(Property.TSERV_DEFAULT_BLOCKSIZE, Long.toString(100000));
aconf.set(Property.TSERV_DATACACHE_SIZE, Long.toString(100000000));
aconf.set(Property.TSERV_INDEXCACHE_SIZE, Long.toString(100000000));