You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluo.apache.org by kt...@apache.org on 2017/10/24 14:02:44 UTC
[fluo] branch master updated: fixes #950 Make VisibilityCache
customizable (#951)
This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/fluo.git
The following commit(s) were added to refs/heads/master by this push:
new 9e87f47 fixes #950 Make VisibilityCache customizable (#951)
9e87f47 is described below
commit 9e87f477463602533d8611c9561484d41d135654
Author: Kenneth McFarland <ke...@gmail.com>
AuthorDate: Sat Oct 21 16:47:58 2017 -0700
fixes #950 Make VisibilityCache customizable (#951)
---
.../fluo/core/impl/FluoConfigurationImpl.java | 43 +++++++++++++++++++++-
.../org/apache/fluo/core/impl/SharedResources.java | 2 +-
.../org/apache/fluo/core/impl/VisibilityCache.java | 9 +++--
.../apache/fluo/core/impl/VisibilityCacheTest.java | 3 +-
4 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/fluo/core/impl/FluoConfigurationImpl.java b/modules/core/src/main/java/org/apache/fluo/core/impl/FluoConfigurationImpl.java
index febb318..aad97a1 100644
--- a/modules/core/src/main/java/org/apache/fluo/core/impl/FluoConfigurationImpl.java
+++ b/modules/core/src/main/java/org/apache/fluo/core/impl/FluoConfigurationImpl.java
@@ -105,7 +105,7 @@ public class FluoConfigurationImpl {
}
public static final String TX_INFO_CACHE_SIZE = FLUO_IMPL_PREFIX + ".tx.failed.cache.size.mb";
- public static final long TX_INFO_CACHE_SIZE_DEFAULT = 10000000;
+ public static final long TX_INFO_CACHE_SIZE_DEFAULT = 10_000_000;
/**
* Gets the cache size
@@ -144,6 +144,47 @@ public class FluoConfigurationImpl {
return tu.convert(millis, TimeUnit.MILLISECONDS);
}
+ public static final String VISIBILITY_CACHE_SIZE = FLUO_IMPL_PREFIX + ".visibility.cache.size.mb";
+ public static final long VISIBILITY_CACHE_SIZE_DEFAULT = 10_000_000;
+
+ /**
+ * Gets the cache size
+ *
+ * @param conf The FluoConfiguration
+ * @return The size of the cache value from the property value {@value #VISIBILITY_CACHE_SIZE}
+ * if it is set, else the value of the default value {@value #VISIBILITY_CACHE_SIZE_DEFAULT}
+ */
+
+ public static long getVisibilityCacheSize(FluoConfiguration conf) {
+ long size = conf.getLong(VISIBILITY_CACHE_SIZE, VISIBILITY_CACHE_SIZE_DEFAULT);
+ if (size <= 0) {
+ throw new IllegalArgumentException(
+ "Cache size must be positive for " + VISIBILITY_CACHE_SIZE);
+ }
+ return size;
+ }
+
+ public static final String VISIBILITY_CACHE_TIMEOUT =
+ FLUO_IMPL_PREFIX + ".visibility.cache.expireTime.ms";
+ public static final long VISIBILITY_CACHE_TIMEOUT_DEFAULT = 24 * 60 * 1000;
+
+ /**
+ * Gets the time before stale entries in the cache are evicted based on age.
+ * This method returns a long representing the time converted from the
+ * TimeUnit passed in.
+ *
+ * @param conf The FluoConfiguration
+ * @param tu The TimeUnit desired to represent the cache timeout
+ */
+
+ public static long getVisibilityCacheTimeout(FluoConfiguration conf, TimeUnit tu) {
+ long millis = conf.getLong(VISIBILITY_CACHE_TIMEOUT, VISIBILITY_CACHE_TIMEOUT_DEFAULT);
+ if (millis <= 0) {
+ throw new IllegalArgumentException("Timeout must positive for " + VISIBILITY_CACHE_TIMEOUT);
+ }
+ return tu.convert(millis, TimeUnit.MILLISECONDS);
+ }
+
public static final String ASYNC_CW_THREADS = FLUO_IMPL_PREFIX + ".async.cw.threads";
public static final int ASYNC_CW_THREADS_DEFAULT = 8;
public static final String ASYNC_CW_LIMIT = FLUO_IMPL_PREFIX + ".async.cw.limit";
diff --git a/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java b/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
index b629fdf..10c79b8 100644
--- a/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
+++ b/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
@@ -82,7 +82,7 @@ public class SharedResources implements AutoCloseable {
.setAuthorizations(env.getAuthorizations()).setMaxWriteThreads(numCWThreads));
txInfoCache = new TxInfoCache(env);
- visCache = new VisibilityCache();
+ visCache = new VisibilityCache(env.getConfiguration());
metricRegistry = new MetricRegistry();
int commitThreads = env.getConfiguration().getInt(FluoConfigurationImpl.ASYNC_COMMIT_THREADS,
diff --git a/modules/core/src/main/java/org/apache/fluo/core/impl/VisibilityCache.java b/modules/core/src/main/java/org/apache/fluo/core/impl/VisibilityCache.java
index 06c4342..eeb1693 100644
--- a/modules/core/src/main/java/org/apache/fluo/core/impl/VisibilityCache.java
+++ b/modules/core/src/main/java/org/apache/fluo/core/impl/VisibilityCache.java
@@ -24,12 +24,13 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.Weigher;
import org.apache.accumulo.core.security.ColumnVisibility;
+import org.apache.fluo.api.config.FluoConfiguration;
import org.apache.fluo.api.data.Bytes;
import org.apache.fluo.api.data.Column;
import org.apache.fluo.core.util.ByteUtil;
/**
- * PArsing Column visibilities can be expensive. This class provides a cache of parsed visibility
+ * Parsing Column visibilities can be expensive. This class provides a cache of parsed visibility
* objects.
*/
@@ -46,11 +47,11 @@ public class VisibilityCache {
private final Cache<Bytes, ColumnVisibility> visCache;
- VisibilityCache() {
+ VisibilityCache(FluoConfiguration conf) {
visCache = CacheBuilder.newBuilder()
- .expireAfterAccess(FluoConfigurationImpl.TX_INFO_CACHE_TIMEOUT_DEFAULT,
+ .expireAfterAccess(FluoConfigurationImpl.getVisibilityCacheTimeout(conf, TimeUnit.MILLISECONDS),
TimeUnit.MILLISECONDS)
- .maximumWeight(FluoConfigurationImpl.TX_INFO_CACHE_SIZE_DEFAULT).weigher(new VisWeigher())
+ .maximumWeight(FluoConfigurationImpl.getVisibilityCacheSize(conf)).weigher(new VisWeigher())
.concurrencyLevel(10).build();
}
diff --git a/modules/core/src/test/java/org/apache/fluo/core/impl/VisibilityCacheTest.java b/modules/core/src/test/java/org/apache/fluo/core/impl/VisibilityCacheTest.java
index 81036bb..1e207f2 100644
--- a/modules/core/src/test/java/org/apache/fluo/core/impl/VisibilityCacheTest.java
+++ b/modules/core/src/test/java/org/apache/fluo/core/impl/VisibilityCacheTest.java
@@ -15,6 +15,7 @@
package org.apache.fluo.core.impl;
+import org.apache.fluo.api.config.FluoConfiguration;
import org.junit.Assert;
import org.junit.Test;
@@ -25,7 +26,7 @@ public class VisibilityCacheTest {
@Test
public void testVisibilityCacheConstructor() {
- VisibilityCache cache = new VisibilityCache();
+ VisibilityCache cache = new VisibilityCache(new FluoConfiguration());
Assert.assertNotNull("VisibilityCache failed to instantiate.", cache);
cache = null;
}
--
To stop receiving notification emails like this one, please contact
['"commits@fluo.apache.org" <co...@fluo.apache.org>'].