Repository: accumulo Updated Branches: refs/heads/master c121ae2d2 -> b7fe94c02
ACCUMULO-2477 Replace our implemenations of Entry Our uses of Map.Entry can defer to SimpleImmutableEntry. We should use that instead of maintaining our own version. Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/b7fe94c0 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/b7fe94c0 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/b7fe94c0 Branch: refs/heads/master Commit: b7fe94c02e74f640fe1ba8b5e71439a189636b42 Parents: c121ae2 Author: Mike Drob <md...@cloudera.com> Authored: Mon Mar 17 12:21:09 2014 -0400 Committer: Mike Drob <md...@cloudera.com> Committed: Mon Mar 17 12:21:09 2014 -0400 ---------------------------------------------------------------------- .../impl/TabletServerBatchReaderIterator.java | 32 ++------------ .../java/org/apache/accumulo/core/data/Key.java | 8 ++-- .../org/apache/accumulo/core/data/KeyValue.java | 45 ++++++-------------- .../org/apache/accumulo/core/util/Pair.java | 20 +-------- .../examples/simple/mapreduce/TableToFile.java | 20 +-------- .../org/apache/accumulo/tserver/NativeMap.java | 34 +-------------- .../org/apache/accumulo/tserver/Tablet.java | 11 ++--- .../apache/accumulo/tserver/TabletServer.java | 4 +- 8 files changed, 32 insertions(+), 142 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java index 30e12c1..d2ca60e 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java +++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java @@ -17,6 +17,7 @@ package org.apache.accumulo.core.client.impl; import java.io.IOException; +import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -104,33 +105,6 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value void receive(List<Entry<Key,Value>> entries); } - private static class MyEntry implements Entry<Key,Value> { - - private Key key; - private Value value; - - MyEntry(Key key, Value value) { - this.key = key; - this.value = value; - } - - @Override - public Key getKey() { - return key; - } - - @Override - public Value getValue() { - return value; - } - - @Override - public Value setValue(Value value) { - throw new UnsupportedOperationException(); - } - - } - public TabletServerBatchReaderIterator(Instance instance, Credentials credentials, String table, Authorizations authorizations, ArrayList<Range> ranges, int numThreads, ExecutorService queryThreadPool, ScannerOptions scannerOptions, long timeout) { @@ -668,7 +642,7 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value ArrayList<Entry<Key,Value>> entries = new ArrayList<Map.Entry<Key,Value>>(scanResult.results.size()); for (TKeyValue kv : scanResult.results) { - entries.add(new MyEntry(new Key(kv.key), new Value(kv.value))); + entries.add(new SimpleImmutableEntry<Key,Value>(new Key(kv.key), new Value(kv.value))); } if (entries.size() > 0) @@ -690,7 +664,7 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value entries = new ArrayList<Map.Entry<Key,Value>>(scanResult.results.size()); for (TKeyValue kv : scanResult.results) { - entries.add(new MyEntry(new Key(kv.key), new Value(kv.value))); + entries.add(new SimpleImmutableEntry<Key,Value>(new Key(kv.key), new Value(kv.value))); } if (entries.size() > 0) http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/core/src/main/java/org/apache/accumulo/core/data/Key.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/data/Key.java b/core/src/main/java/org/apache/accumulo/core/data/Key.java index 74975ae..41754b5 100644 --- a/core/src/main/java/org/apache/accumulo/core/data/Key.java +++ b/core/src/main/java/org/apache/accumulo/core/data/Key.java @@ -877,12 +877,12 @@ public class Key implements WritableComparable<Key>, Cloneable { List<TKeyValue> tkvl = Arrays.asList(new TKeyValue[param.size()]); if (param.size() > 0) - tkvl.set(0, new TKeyValue(param.get(0).key.toThrift(), ByteBuffer.wrap(param.get(0).value))); + tkvl.set(0, new TKeyValue(param.get(0).getKey().toThrift(), ByteBuffer.wrap(param.get(0).getValue().get()))); for (int i = param.size() - 1; i > 0; i--) { - Key prevKey = param.get(i - 1).key; + Key prevKey = param.get(i - 1).getKey(); KeyValue kv = param.get(i); - Key key = kv.key; + Key key = kv.getKey(); TKey newKey = null; @@ -912,7 +912,7 @@ public class Key implements WritableComparable<Key>, Cloneable { if (newKey == null) newKey = key.toThrift(); - tkvl.set(i, new TKeyValue(newKey, ByteBuffer.wrap(kv.value))); + tkvl.set(i, new TKeyValue(newKey, ByteBuffer.wrap(kv.getValue().get()))); } return tkvl; http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/core/src/main/java/org/apache/accumulo/core/data/KeyValue.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/data/KeyValue.java b/core/src/main/java/org/apache/accumulo/core/data/KeyValue.java index 83996f8..9a0bdbd 100644 --- a/core/src/main/java/org/apache/accumulo/core/data/KeyValue.java +++ b/core/src/main/java/org/apache/accumulo/core/data/KeyValue.java @@ -16,20 +16,13 @@ */ package org.apache.accumulo.core.data; -import static org.apache.accumulo.core.util.ByteBufferUtil.toBytes; - import java.nio.ByteBuffer; -import java.util.Map; - -import org.apache.accumulo.core.Constants; +import java.util.AbstractMap.SimpleImmutableEntry; /** * A key/value pair. The key and value may not be set after construction. */ -public class KeyValue implements Map.Entry<Key,Value> { - - public Key key; - public byte[] value; +public class KeyValue extends SimpleImmutableEntry<Key,Value> { /** * Creates a new key/value pair. @@ -38,8 +31,7 @@ public class KeyValue implements Map.Entry<Key,Value> { * @param value bytes of value */ public KeyValue(Key key, byte[] value) { - this.key = key; - this.value = value; + super(key, new Value(value, false)); } /** @@ -49,27 +41,18 @@ public class KeyValue implements Map.Entry<Key,Value> { * @param value buffer containing bytes of value */ public KeyValue(Key key, ByteBuffer value) { - this.key = key; - this.value = toBytes(value); - } - - @Override - public Key getKey() { - return key; - } - - @Override - public Value getValue() { - return new Value(value); + super(key, new Value(value)); } - @Override - public Value setValue(Value value) { - throw new UnsupportedOperationException(); - } - - public String toString() { - return key + " " + new String(value, Constants.UTF8); + /** + * Creates a new key/value pair. + * + * @param key + * key + * @param value + * buffer containing bytes of value + */ + public KeyValue(Key key, Value value) { + super(key, value); } - } http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/core/src/main/java/org/apache/accumulo/core/util/Pair.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/util/Pair.java b/core/src/main/java/org/apache/accumulo/core/util/Pair.java index fb4ad80..00eab0e 100644 --- a/core/src/main/java/org/apache/accumulo/core/util/Pair.java +++ b/core/src/main/java/org/apache/accumulo/core/util/Pair.java @@ -16,7 +16,7 @@ */ package org.apache.accumulo.core.util; -import java.util.Map; +import java.util.AbstractMap.SimpleImmutableEntry; import java.util.Map.Entry; public class Pair<A,B> { @@ -73,23 +73,7 @@ public class Pair<A,B> { } public Entry<A,B> toMapEntry() { - return new Map.Entry<A,B>() { - - @Override - public A getKey() { - return getFirst(); - } - - @Override - public B getValue() { - return getSecond(); - } - - @Override - public B setValue(B value) { - throw new UnsupportedOperationException(); - } - }; + return new SimpleImmutableEntry<A,B>(getFirst(), getSecond()); } public Pair<B,A> swap() { http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TableToFile.java ---------------------------------------------------------------------- diff --git a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TableToFile.java b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TableToFile.java index 3a211e2..48e3d5e 100644 --- a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TableToFile.java +++ b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TableToFile.java @@ -17,6 +17,7 @@ package org.apache.accumulo.examples.simple.mapreduce; import java.io.IOException; +import java.util.AbstractMap.SimpleImmutableEntry; import java.util.HashSet; import java.util.Map; @@ -59,24 +60,7 @@ public class TableToFile extends Configured implements Tool { public static class TTFMapper extends Mapper<Key,Value,NullWritable,Text> { @Override public void map(Key row, Value data, Context context) throws IOException, InterruptedException { - final Key r = row; - final Value v = data; - Map.Entry<Key,Value> entry = new Map.Entry<Key,Value>() { - @Override - public Key getKey() { - return r; - } - - @Override - public Value getValue() { - return v; - } - - @Override - public Value setValue(Value value) { - return null; - } - }; + Map.Entry<Key,Value> entry = new SimpleImmutableEntry<Key,Value>(row, data); context.write(NullWritable.get(), new Text(DefaultFormatter.formatEntry(entry, false))); context.setStatus("Outputed Value"); } http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java ---------------------------------------------------------------------- diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java index a454d6c..e22a54f 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java @@ -18,6 +18,7 @@ package org.apache.accumulo.tserver; import java.io.File; import java.io.IOException; +import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -451,7 +452,7 @@ public class NativeMap implements Iterable<Map.Entry<Key,Value>> { hasNext = nmiNext(nmiPointer, fieldsLens); - return new NMEntry(k, v); + return new SimpleImmutableEntry<Key,Value>(k, v); } @Override @@ -470,37 +471,6 @@ public class NativeMap implements Iterable<Map.Entry<Key,Value>> { } - private static class NMEntry implements Map.Entry<Key,Value> { - - private Key key; - private Value val; - - NMEntry(Key k, Value v) { - this.key = k; - this.val = v; - } - - @Override - public Key getKey() { - return key; - } - - @Override - public Value getValue() { - return val; - } - - @Override - public Value setValue(Value value) { - throw new UnsupportedOperationException(); - } - - @Override - public String toString() { - return key + "=" + val; - } - } - public NativeMap() { nmPointer = createNativeMap(); rwLock = new ReentrantReadWriteLock(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java ---------------------------------------------------------------------- diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java index dd20fd9..9ce24be 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java @@ -1455,17 +1455,12 @@ public class Tablet { super(new Key(k), Arrays.copyOf(v.get(), v.get().length)); } - @Override - public String toString() { - return key.toString() + "=" + getValue(); - } - int numBytes() { - return key.getSize() + getValue().get().length; + return getKey().getSize() + getValue().get().length; } int estimateMemoryUsed() { - return key.getSize() + getValue().get().length + (9 * 32); // overhead is 32 per object + return getKey().getSize() + getValue().get().length + (9 * 32); // overhead is 32 per object } } @@ -1551,7 +1546,7 @@ public class Tablet { throw new IllegalStateException("tablet should not exceed memory usage or close, not both"); if (entriesAdded > 0) - addUnfinishedRange(lookupResult, range, results.get(results.size() - 1).key, false); + addUnfinishedRange(lookupResult, range, results.get(results.size() - 1).getKey(), false); else lookupResult.unfinishedRanges.add(range); http://git-wip-us.apache.org/repos/asf/accumulo/blob/b7fe94c0/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java ---------------------------------------------------------------------- diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java index cdb9dbf..3d58a99 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java @@ -72,9 +72,9 @@ import org.apache.accumulo.core.client.impl.TabletType; import org.apache.accumulo.core.client.impl.Translator; import org.apache.accumulo.core.client.impl.Translator.TKeyExtentTranslator; import org.apache.accumulo.core.client.impl.Translator.TRangeTranslator; +import org.apache.accumulo.core.client.impl.Translators; import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode; import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException; -import org.apache.accumulo.core.client.impl.Translators; import org.apache.accumulo.core.conf.AccumuloConfiguration; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.constraints.Constraint.Environment; @@ -1153,7 +1153,7 @@ public class TabletServer extends AbstractMetricsImpl implements org.apache.accu // convert everything to thrift before adding result List<TKeyValue> retResults = new ArrayList<TKeyValue>(); for (KVEntry entry : results) - retResults.add(new TKeyValue(entry.key.toThrift(), ByteBuffer.wrap(entry.value))); + retResults.add(new TKeyValue(entry.getKey().toThrift(), ByteBuffer.wrap(entry.getValue().get()))); Map<TKeyExtent,List<TRange>> retFailures = Translator.translate(failures, Translators.KET, new Translator.ListTranslator<Range,TRange>(Translators.RT)); List<TKeyExtent> retFullScans = Translator.translate(fullScans, Translators.KET); TKeyExtent retPartScan = null;