You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2017/04/27 21:34:56 UTC
[2/2] accumulo git commit: ACCUMULO-3079 Only add qualifier filter if
needed ACCUMULO-3079 Optimize vis filtering when auths empty ACCUMULO-3079
Avoid WrapinIter.getSource() in loops
ACCUMULO-3079 Only add qualifier filter if needed
ACCUMULO-3079 Optimize vis filtering when auths empty
ACCUMULO-3079 Avoid WrapinIter.getSource() in loops
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/f81a8ec7
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/f81a8ec7
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/f81a8ec7
Branch: refs/heads/master
Commit: f81a8ec7410e789d11941351d5899b8894c6a322
Parents: b56a334
Author: Keith Turner <kt...@apache.org>
Authored: Mon Apr 10 13:42:33 2017 -0400
Committer: Mike Miller <mm...@apache.org>
Committed: Thu Apr 27 16:54:56 2017 -0400
----------------------------------------------------------------------
.../core/client/mock/MockScannerBase.java | 4 +-
.../apache/accumulo/core/iterators/Filter.java | 5 +-
.../core/iterators/FirstEntryInRowIterator.java | 11 ++--
.../accumulo/core/iterators/IteratorUtil.java | 4 +-
.../iterators/system/ColumnQualifierFilter.java | 32 ++++++-----
.../core/iterators/system/VisibilityFilter.java | 27 +++++++++-
.../core/iterators/user/VersioningIterator.java | 5 +-
.../core/iterators/system/ColumnFilterTest.java | 57 ++++++++++++++------
.../iterators/system/VisibilityFilterTest.java | 20 ++++++-
.../core/iterators/user/FilterTest.java | 12 ++---
.../user/TransformingIteratorTest.java | 2 +-
.../performance/scan/CollectTabletStats.java | 4 +-
12 files changed, 132 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/client/mock/MockScannerBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/MockScannerBase.java b/core/src/main/java/org/apache/accumulo/core/client/mock/MockScannerBase.java
index 8684697..6dd5737 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mock/MockScannerBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mock/MockScannerBase.java
@@ -133,8 +133,8 @@ public class MockScannerBase extends ScannerOptions implements ScannerBase {
public SortedKeyValueIterator<Key,Value> createFilter(SortedKeyValueIterator<Key,Value> inner) throws IOException {
byte[] defaultLabels = {};
inner = new ColumnFamilySkippingIterator(new DeletingIterator(inner, false));
- ColumnQualifierFilter cqf = new ColumnQualifierFilter(inner, new HashSet<>(fetchedColumns));
- VisibilityFilter vf = new VisibilityFilter(cqf, auths, defaultLabels);
+ SortedKeyValueIterator<Key,Value> cqf = ColumnQualifierFilter.wrap(inner, new HashSet<>(fetchedColumns));
+ SortedKeyValueIterator<Key,Value> vf = VisibilityFilter.wrap(cqf, auths, defaultLabels);
AccumuloConfiguration conf = new MockConfiguration(table.settings);
MockIteratorEnvironment iterEnv = new MockIteratorEnvironment(auths);
SortedKeyValueIterator<Key,Value> result = iterEnv.getTopLevelIterator(IteratorUtil.loadIterators(IteratorScope.scan, vf, null, conf,
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java b/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
index 8b135c7..e2d13d6 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
@@ -69,9 +69,10 @@ public abstract class Filter extends WrappingIterator implements OptionDescriber
* Iterates over the source until an acceptable key/value pair is found.
*/
protected void findTop() {
- while (getSource().hasTop() && !getSource().getTopKey().isDeleted() && (negate == accept(getSource().getTopKey(), getSource().getTopValue()))) {
+ SortedKeyValueIterator<Key,Value> source = getSource();
+ while (source.hasTop() && !source.getTopKey().isDeleted() && (negate == accept(source.getTopKey(), source.getTopValue()))) {
try {
- getSource().next();
+ source.next();
} catch (IOException e) {
throw new RuntimeException(e);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
index 17b8f43..e43b4f7 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
@@ -79,27 +79,28 @@ public class FirstEntryInRowIterator extends SkippingIterator implements OptionD
if (finished || lastRowFound == null)
return;
int count = 0;
- while (getSource().hasTop() && lastRowFound.equals(getSource().getTopKey().getRow())) {
+ SortedKeyValueIterator<Key,Value> source = getSource();
+ while (source.hasTop() && lastRowFound.equals(source.getTopKey().getRow())) {
// try to efficiently jump to the next matching key
if (count < numscans) {
++count;
- getSource().next(); // scan
+ source.next(); // scan
} else {
// too many scans, just seek
count = 0;
// determine where to seek to, but don't go beyond the user-specified range
- Key nextKey = getSource().getTopKey().followingKey(PartialKey.ROW);
+ Key nextKey = source.getTopKey().followingKey(PartialKey.ROW);
if (!latestRange.afterEndKey(nextKey))
- getSource().seek(new Range(nextKey, true, latestRange.getEndKey(), latestRange.isEndKeyInclusive()), latestColumnFamilies, latestInclusive);
+ source.seek(new Range(nextKey, true, latestRange.getEndKey(), latestRange.isEndKeyInclusive()), latestColumnFamilies, latestInclusive);
else {
finished = true;
break;
}
}
}
- lastRowFound = getSource().hasTop() ? getSource().getTopKey().getRow(lastRowFound) : null;
+ lastRowFound = source.hasTop() ? source.getTopKey().getRow(lastRowFound) : null;
}
private boolean finished = true;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java b/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
index 338da90..2e09782 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
@@ -395,7 +395,7 @@ public class IteratorUtil {
byte[] defaultVisibility) throws IOException {
DeletingIterator delIter = new DeletingIterator(source, false);
ColumnFamilySkippingIterator cfsi = new ColumnFamilySkippingIterator(delIter);
- ColumnQualifierFilter colFilter = new ColumnQualifierFilter(cfsi, cols);
- return new VisibilityFilter(colFilter, auths, defaultVisibility);
+ SortedKeyValueIterator<Key,Value> colFilter = ColumnQualifierFilter.wrap(cfsi, cols);
+ return VisibilityFilter.wrap(colFilter, auths, defaultVisibility);
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/system/ColumnQualifierFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/system/ColumnQualifierFilter.java b/core/src/main/java/org/apache/accumulo/core/iterators/system/ColumnQualifierFilter.java
index dbd9171..86fc2c8 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/system/ColumnQualifierFilter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/system/ColumnQualifierFilter.java
@@ -30,11 +30,10 @@ import org.apache.accumulo.core.iterators.ServerFilter;
import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
public class ColumnQualifierFilter extends ServerFilter {
- private final boolean scanColumns;
private HashSet<ByteSequence> columnFamilies;
private HashMap<ByteSequence,HashSet<ByteSequence>> columnsQualifiers;
- public ColumnQualifierFilter(SortedKeyValueIterator<Key,Value> iterator, Set<Column> columns) {
+ private ColumnQualifierFilter(SortedKeyValueIterator<Key,Value> iterator, Set<Column> columns) {
super(iterator);
this.columnFamilies = new HashSet<>();
this.columnsQualifiers = new HashMap<>();
@@ -54,24 +53,17 @@ public class ColumnQualifierFilter extends ServerFilter {
columnFamilies.add(new ArrayByteSequence(col.columnFamily));
}
}
-
- // only take action when column qualifies are present
- scanColumns = this.columnsQualifiers.size() > 0;
}
- public ColumnQualifierFilter(SortedKeyValueIterator<Key,Value> iterator, HashSet<ByteSequence> columnFamilies,
- HashMap<ByteSequence,HashSet<ByteSequence>> columnsQualifiers, boolean scanColumns) {
+ private ColumnQualifierFilter(SortedKeyValueIterator<Key,Value> iterator, HashSet<ByteSequence> columnFamilies,
+ HashMap<ByteSequence,HashSet<ByteSequence>> columnsQualifiers) {
super(iterator);
this.columnFamilies = columnFamilies;
this.columnsQualifiers = columnsQualifiers;
- this.scanColumns = scanColumns;
}
@Override
public boolean accept(Key key, Value v) {
- if (!scanColumns)
- return true;
-
if (columnFamilies.contains(key.getColumnFamilyData()))
return true;
@@ -84,6 +76,22 @@ public class ColumnQualifierFilter extends ServerFilter {
@Override
public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
- return new ColumnQualifierFilter(source.deepCopy(env), columnFamilies, columnsQualifiers, scanColumns);
+ return new ColumnQualifierFilter(source.deepCopy(env), columnFamilies, columnsQualifiers);
+ }
+
+ public static SortedKeyValueIterator<Key,Value> wrap(SortedKeyValueIterator<Key,Value> source, Set<Column> cols) {
+ boolean sawNonNullQual = false;
+ for (Column col : cols) {
+ if (col.getColumnQualifier() != null) {
+ sawNonNullQual = true;
+ break;
+ }
+ }
+
+ if (sawNonNullQual) {
+ return new ColumnQualifierFilter(source, cols);
+ } else {
+ return source;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/system/VisibilityFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/system/VisibilityFilter.java b/core/src/main/java/org/apache/accumulo/core/iterators/system/VisibilityFilter.java
index b260bc4..6037233 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/system/VisibilityFilter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/system/VisibilityFilter.java
@@ -46,7 +46,7 @@ public class VisibilityFilter extends SynchronizedServerFilter {
private static final Logger log = LoggerFactory.getLogger(VisibilityFilter.class);
- public VisibilityFilter(SortedKeyValueIterator<Key,Value> iterator, Authorizations authorizations, byte[] defaultVisibility) {
+ private VisibilityFilter(SortedKeyValueIterator<Key,Value> iterator, Authorizations authorizations, byte[] defaultVisibility) {
super(iterator);
this.ve = new VisibilityEvaluator(authorizations);
this.authorizations = authorizations;
@@ -84,4 +84,29 @@ public class VisibilityFilter extends SynchronizedServerFilter {
return false;
}
}
+
+ private static class EmptyAuthsVisibilityFilter extends SynchronizedServerFilter {
+
+ public EmptyAuthsVisibilityFilter(SortedKeyValueIterator<Key,Value> source) {
+ super(source);
+ }
+
+ @Override
+ public synchronized SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
+ return new EmptyAuthsVisibilityFilter(source.deepCopy(env));
+ }
+
+ @Override
+ protected boolean accept(Key k, Value v) {
+ return k.getColumnVisibilityData().length() == 0;
+ }
+ }
+
+ public static SortedKeyValueIterator<Key,Value> wrap(SortedKeyValueIterator<Key,Value> source, Authorizations authorizations, byte[] defaultVisibility) {
+ if (authorizations.isEmpty() && defaultVisibility.length == 0) {
+ return new EmptyAuthsVisibilityFilter(source);
+ } else {
+ return new VisibilityFilter(source, authorizations, defaultVisibility);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
index 88ba20d..3334d9f 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
@@ -97,11 +97,12 @@ public class VersioningIterator extends WrappingIterator implements OptionDescri
super.next();
int count = 0;
- while (getSource().hasTop() && getSource().getTopKey().equals(keyToSkip, PartialKey.ROW_COLFAM_COLQUAL_COLVIS)) {
+ SortedKeyValueIterator<Key,Value> source = getSource();
+ while (source.hasTop() && source.getTopKey().equals(keyToSkip, PartialKey.ROW_COLFAM_COLQUAL_COLVIS)) {
if (count < maxCount) {
// it is quicker to call next if we are close, but we never know if we are close
// so give next a try a few times
- getSource().next();
+ source.next();
count++;
} else {
reseek(keyToSkip.followingKey(PartialKey.ROW_COLFAM_COLQUAL_COLVIS));
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
index 6158476..4d9d3ab 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
@@ -16,14 +16,20 @@
*/
package org.apache.accumulo.core.iterators.system;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.TreeMap;
import junit.framework.TestCase;
import org.apache.accumulo.core.data.Column;
import org.apache.accumulo.core.data.Key;
+import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
+import org.apache.accumulo.core.iterators.SortedMapIterator;
import org.apache.hadoop.io.Text;
+import org.junit.Assert;
public class ColumnFilterTest extends TestCase {
@@ -40,39 +46,60 @@ public class ColumnFilterTest extends TestCase {
}
public void test1() {
- HashSet<Column> columns = new HashSet<>();
+ TreeMap<Key,Value> data = new TreeMap<Key,Value>();
+ data.put(newKey("r1", "cf1", "cq1"), new Value(""));
+ data.put(newKey("r1", "cf2", "cq1"), new Value(""));
+ HashSet<Column> columns = new HashSet<>();
columns.add(newColumn("cf1"));
- ColumnQualifierFilter cf = new ColumnQualifierFilter(null, columns);
-
- assertTrue(cf.accept(newKey("r1", "cf1", "cq1"), new Value(new byte[0])));
- assertTrue(cf.accept(newKey("r1", "cf2", "cq1"), new Value(new byte[0])));
+ SortedMapIterator smi = new SortedMapIterator(data);
+ SortedKeyValueIterator<Key,Value> cf = ColumnQualifierFilter.wrap(smi, columns);
+ Assert.assertSame(smi, cf);
}
- public void test2() {
+ public void test2() throws Exception {
+
+ TreeMap<Key,Value> data = new TreeMap<Key,Value>();
+ data.put(newKey("r1", "cf1", "cq1"), new Value(""));
+ data.put(newKey("r1", "cf2", "cq1"), new Value(""));
+ data.put(newKey("r1", "cf2", "cq2"), new Value(""));
+
HashSet<Column> columns = new HashSet<>();
columns.add(newColumn("cf1"));
columns.add(newColumn("cf2", "cq1"));
- ColumnQualifierFilter cf = new ColumnQualifierFilter(null, columns);
+ SortedKeyValueIterator<Key,Value> cf = ColumnQualifierFilter.wrap(new SortedMapIterator(data), columns);
+ cf.seek(new Range(), Collections.emptySet(), false);
- assertTrue(cf.accept(newKey("r1", "cf1", "cq1"), new Value(new byte[0])));
- assertTrue(cf.accept(newKey("r1", "cf2", "cq1"), new Value(new byte[0])));
- assertFalse(cf.accept(newKey("r1", "cf2", "cq2"), new Value(new byte[0])));
+ Assert.assertTrue(cf.hasTop());
+ Assert.assertEquals(newKey("r1", "cf1", "cq1"), cf.getTopKey());
+ cf.next();
+ Assert.assertTrue(cf.hasTop());
+ Assert.assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
+ cf.next();
+ Assert.assertFalse(cf.hasTop());
}
- public void test3() {
+ public void test3() throws Exception {
+
+ TreeMap<Key,Value> data = new TreeMap<Key,Value>();
+ data.put(newKey("r1", "cf1", "cq1"), new Value(""));
+ data.put(newKey("r1", "cf2", "cq1"), new Value(""));
+ data.put(newKey("r1", "cf2", "cq2"), new Value(""));
+
HashSet<Column> columns = new HashSet<>();
columns.add(newColumn("cf2", "cq1"));
- ColumnQualifierFilter cf = new ColumnQualifierFilter(null, columns);
+ SortedKeyValueIterator<Key,Value> cf = ColumnQualifierFilter.wrap(new SortedMapIterator(data), columns);
+ cf.seek(new Range(), Collections.emptySet(), false);
- assertFalse(cf.accept(newKey("r1", "cf1", "cq1"), new Value(new byte[0])));
- assertTrue(cf.accept(newKey("r1", "cf2", "cq1"), new Value(new byte[0])));
- assertFalse(cf.accept(newKey("r1", "cf2", "cq2"), new Value(new byte[0])));
+ Assert.assertTrue(cf.hasTop());
+ Assert.assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
+ cf.next();
+ Assert.assertFalse(cf.hasTop());
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
index 68323c6..2e5ca04 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
@@ -26,6 +26,7 @@ import org.apache.accumulo.core.data.ByteSequence;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
import org.apache.accumulo.core.iterators.SortedMapIterator;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.log4j.Level;
@@ -37,7 +38,7 @@ public class VisibilityFilterTest extends TestCase {
TreeMap<Key,Value> tm = new TreeMap<>();
tm.put(new Key("r1", "cf1", "cq1", "A&"), new Value(new byte[0]));
- VisibilityFilter filter = new VisibilityFilter(new SortedMapIterator(tm), new Authorizations("A"), "".getBytes());
+ SortedKeyValueIterator<Key,Value> filter = VisibilityFilter.wrap(new SortedMapIterator(tm), new Authorizations("A"), "".getBytes());
// suppress logging
Level prevLevel = Logger.getLogger(VisibilityFilter.class).getLevel();
@@ -49,4 +50,21 @@ public class VisibilityFilterTest extends TestCase {
Logger.getLogger(VisibilityFilter.class).setLevel(prevLevel);
}
+ public void testEmptyAuths() throws IOException {
+ TreeMap<Key,Value> tm = new TreeMap<>();
+
+ tm.put(new Key("r1", "cf1", "cq1", ""), new Value(new byte[0]));
+ tm.put(new Key("r1", "cf1", "cq2", "C"), new Value(new byte[0]));
+ tm.put(new Key("r1", "cf1", "cq3", ""), new Value(new byte[0]));
+ SortedKeyValueIterator<Key,Value> filter = VisibilityFilter.wrap(new SortedMapIterator(tm), Authorizations.EMPTY, "".getBytes());
+
+ filter.seek(new Range(), new HashSet<ByteSequence>(), false);
+ assertTrue(filter.hasTop());
+ assertEquals(new Key("r1", "cf1", "cq1", ""), filter.getTopKey());
+ filter.next();
+ assertTrue(filter.hasTop());
+ assertEquals(new Key("r1", "cf1", "cq3", ""), filter.getTopKey());
+ filter.next();
+ assertFalse(filter.hasTop());
+ }
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
index b26c218..244699a 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
@@ -358,19 +358,19 @@ public class FilterTest {
}
assertEquals(1000, tm.size());
- ColumnQualifierFilter a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
+ SortedKeyValueIterator<Key,Value> a = ColumnQualifierFilter.wrap(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(1000, size(a));
hsc = new HashSet<>();
hsc.add(new Column("a".getBytes(), "b".getBytes(), null));
- a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
+ a = ColumnQualifierFilter.wrap(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(a);
assertEquals(500, size);
hsc = new HashSet<>();
- a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
+ a = ColumnQualifierFilter.wrap(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
size = size(a);
assertEquals(1000, size);
@@ -394,20 +394,20 @@ public class FilterTest {
}
assertEquals(1000, tm.size());
- VisibilityFilter a = new VisibilityFilter(new SortedMapIterator(tm), auths, le2.getExpression());
+ SortedKeyValueIterator<Key,Value> a = VisibilityFilter.wrap(new SortedMapIterator(tm), auths, le2.getExpression());
a.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(a);
assertEquals(750, size);
}
- private ColumnQualifierFilter ncqf(TreeMap<Key,Value> tm, Column... columns) throws IOException {
+ private SortedKeyValueIterator<Key,Value> ncqf(TreeMap<Key,Value> tm, Column... columns) throws IOException {
HashSet<Column> hsc = new HashSet<>();
for (Column column : columns) {
hsc.add(column);
}
- ColumnQualifierFilter a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
+ SortedKeyValueIterator<Key,Value> a = ColumnQualifierFilter.wrap(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
return a;
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
index d02b7f2..7ff08ec 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
@@ -81,7 +81,7 @@ public class TransformingIteratorTest {
private void setUpTransformIterator(Class<? extends TransformingIterator> clazz, boolean setupAuths) throws IOException {
SortedMapIterator source = new SortedMapIterator(data);
ColumnFamilySkippingIterator cfsi = new ColumnFamilySkippingIterator(source);
- VisibilityFilter visFilter = new VisibilityFilter(cfsi, authorizations, new byte[0]);
+ SortedKeyValueIterator<Key,Value> visFilter = VisibilityFilter.wrap(cfsi, authorizations, new byte[0]);
ReuseIterator reuserIter = new ReuseIterator();
reuserIter.init(visFilter, EMPTY_OPTS, null);
try {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/f81a8ec7/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
index d299aa0..f4c9078 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
@@ -431,8 +431,8 @@ public class CollectTabletStats {
MultiIterator multiIter = new MultiIterator(iters, ke);
DeletingIterator delIter = new DeletingIterator(multiIter, false);
ColumnFamilySkippingIterator cfsi = new ColumnFamilySkippingIterator(delIter);
- ColumnQualifierFilter colFilter = new ColumnQualifierFilter(cfsi, columnSet);
- VisibilityFilter visFilter = new VisibilityFilter(colFilter, authorizations, defaultLabels);
+ SortedKeyValueIterator<Key,Value> colFilter = ColumnQualifierFilter.wrap(cfsi, columnSet);
+ SortedKeyValueIterator<Key,Value> visFilter = VisibilityFilter.wrap(colFilter, authorizations, defaultLabels);
if (useTableIterators)
return IteratorUtil.loadIterators(IteratorScope.scan, visFilter, ke, conf, ssiList, ssio, null);