ACCUMULO-474: memoize ColumnVisibility objects to decrease memory usage git-svn-id: https://svn.apache.org/repos/asf/incubator/accumulo/branches/1.4@1302914 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/accumulo-wikisearch/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo-wikisearch/commit/53337735 Tree: http://git-wip-us.apache.org/repos/asf/accumulo-wikisearch/tree/53337735 Diff: http://git-wip-us.apache.org/repos/asf/accumulo-wikisearch/diff/53337735 Branch: refs/heads/master Commit: 533377356b3f2999c7e15d7e948c487d22463186 Parents: 2c1666f Author: Eric C. Newton <e...@apache.org> Authored: Tue Mar 20 14:32:50 2012 +0000 Committer: Eric C. Newton <e...@apache.org> Committed: Tue Mar 20 14:32:50 2012 +0000 ---------------------------------------------------------------------- .../wikisearch/iterator/EvaluatingIterator.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo-wikisearch/blob/53337735/query/src/main/java/org/apache/accumulo/examples/wikisearch/iterator/EvaluatingIterator.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/accumulo/examples/wikisearch/iterator/EvaluatingIterator.java b/query/src/main/java/org/apache/accumulo/examples/wikisearch/iterator/EvaluatingIterator.java index 8dde40f..d51023c 100644 --- a/query/src/main/java/org/apache/accumulo/examples/wikisearch/iterator/EvaluatingIterator.java +++ b/query/src/main/java/org/apache/accumulo/examples/wikisearch/iterator/EvaluatingIterator.java @@ -30,12 +30,14 @@ import org.apache.accumulo.core.iterators.SortedKeyValueIterator; import org.apache.accumulo.core.security.ColumnVisibility; import org.apache.accumulo.examples.wikisearch.parser.EventFields; import org.apache.accumulo.examples.wikisearch.parser.EventFields.FieldValue; +import org.apache.commons.collections.map.LRUMap; import org.apache.hadoop.io.Text; public class EvaluatingIterator extends AbstractEvaluatingIterator { public static final String NULL_BYTE_STRING = "\u0000"; + LRUMap visibilityMap = new LRUMap(); public EvaluatingIterator() { super(); @@ -78,7 +80,20 @@ public class EvaluatingIterator extends AbstractEvaluatingIterator { String fieldName = colq.substring(0, idx); String fieldValue = colq.substring(idx + 1); - event.put(fieldName, new FieldValue(new ColumnVisibility(key.getColumnVisibility().getBytes()), fieldValue.getBytes())); + event.put(fieldName, new FieldValue(getColumnVisibility(key), fieldValue.getBytes())); + } + + /** + * @param key + * @return + */ + public ColumnVisibility getColumnVisibility(Key key) { + ColumnVisibility result = (ColumnVisibility) visibilityMap.get(key.getColumnVisibility()); + if (result != null) + return result; + result = new ColumnVisibility(key.getColumnVisibility().getBytes()); + visibilityMap.put(key.getColumnVisibility(), result); + return result; } /**