You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by vi...@apache.org on 2012/01/03 19:56:44 UTC
svn commit: r1226913 - in /incubator/accumulo/trunk/src:
core/src/main/java/org/apache/accumulo/core/file/rfile/
server/src/main/java/org/apache/accumulo/server/tabletserver/
server/src/test/java/org/apache/accumulo/server/tabletserver/
Author: vines
Date: Tue Jan 3 18:56:44 2012
New Revision: 1226913
URL: http://svn.apache.org/viewvc?rev=1226913&view=rev
Log:
Accumulo-149 - fixed my iterator
Modified:
incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java
incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/InMemoryMap.java
incubator/accumulo/trunk/src/server/src/test/java/org/apache/accumulo/server/tabletserver/InMemoryMapTest.java
Modified: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java?rev=1226913&r1=1226912&r2=1226913&view=diff
==============================================================================
--- incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java (original)
+++ incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java Tue Jan 3 18:56:44 2012
@@ -717,9 +717,7 @@ public class RFile {
IndexEntry indexEntry = iiter.next();
entriesLeft = indexEntry.getNumEntries();
currBlock = getDataBlock(indexEntry);
-
- val = new Value();
-
+
MByteSequence valbs = new MByteSequence(new byte[64], 0, 0);
RelativeKey tmpRk = new RelativeKey();
fastSkipped = tmpRk.fastSkip(currBlock, startKey, valbs, prevKey, null);
Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/InMemoryMap.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/InMemoryMap.java?rev=1226913&r1=1226912&r2=1226913&view=diff
==============================================================================
--- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/InMemoryMap.java (original)
+++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/InMemoryMap.java Tue Jan 3 18:56:44 2012
@@ -18,6 +18,7 @@ package org.apache.accumulo.server.table
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
@@ -34,6 +35,7 @@ import java.util.concurrent.atomic.Atomi
import java.util.concurrent.atomic.AtomicLong;
import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.core.data.ByteSequence;
import org.apache.accumulo.core.data.ColumnUpdate;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
@@ -109,7 +111,7 @@ class PartialMutationSkippingIterator ex
}
-class MemKeyConversionIterator extends SkippingIterator implements InterruptibleIterator {
+class MemKeyConversionIterator extends WrappingIterator implements InterruptibleIterator {
MemKey currKey = null;
Value currVal = null;
@@ -159,18 +161,20 @@ class MemKeyConversionIterator extends S
public void next() throws IOException {
super.next();
- getTopKeyVal();
+ if (hasTop())
+ getTopKeyVal();
}
- @Override
- protected void consume() throws IOException {
- MemKey stopPoint = currKey;
+ public void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive) throws IOException {
+ super.seek(range, columnFamilies, inclusive);
if (hasTop())
getTopKeyVal();
- if (stopPoint == null)
- return;
- while (getSource().hasTop() && currKey.compareTo(stopPoint) <= 0)
- next();
+
+ Key k = range.getStartKey();
+ if (k instanceof MemKey && hasTop()) {
+ while (hasTop() && currKey.compareTo(k) < 0)
+ next();
+ }
}
@Override
@@ -435,7 +439,7 @@ public class InMemoryMap {
readers.add(reader);
- iter = reader;
+ iter = new MemKeyConversionIterator(reader);
}
return iter;
@@ -524,7 +528,7 @@ public class InMemoryMap {
int mc = kvCount.get();
MemoryDataSource mds = new MemoryDataSource();
SourceSwitchingIterator ssi = new SourceSwitchingIterator(new MemoryDataSource());
- MemoryIterator mi = new MemoryIterator(new ColumnFamilySkippingIterator(new PartialMutationSkippingIterator(new MemKeyConversionIterator(ssi), mc)));
+ MemoryIterator mi = new MemoryIterator(new ColumnFamilySkippingIterator(new PartialMutationSkippingIterator(ssi, mc)));
mi.setSSI(ssi);
mi.setMDS(mds);
activeIters.add(mi);
Modified: incubator/accumulo/trunk/src/server/src/test/java/org/apache/accumulo/server/tabletserver/InMemoryMapTest.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/test/java/org/apache/accumulo/server/tabletserver/InMemoryMapTest.java?rev=1226913&r1=1226912&r2=1226913&view=diff
==============================================================================
--- incubator/accumulo/trunk/src/server/src/test/java/org/apache/accumulo/server/tabletserver/InMemoryMapTest.java (original)
+++ incubator/accumulo/trunk/src/server/src/test/java/org/apache/accumulo/server/tabletserver/InMemoryMapTest.java Tue Jan 3 18:56:44 2012
@@ -32,7 +32,6 @@ import org.apache.accumulo.core.iterator
import org.apache.accumulo.core.util.LocalityGroupUtil;
import org.apache.accumulo.server.client.HdfsZooInstance;
import org.apache.accumulo.server.conf.ZooConfiguration;
-import org.apache.accumulo.server.tabletserver.InMemoryMap;
import org.apache.accumulo.server.tabletserver.InMemoryMap.MemoryIterator;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Level;
@@ -258,4 +257,22 @@ public class InMemoryMapTest extends Tes
ski1.close();
}
+
+ public void testSeekBackWards() throws Exception {
+ InMemoryMap imm = new InMemoryMap(false, "/tmp");
+
+ mutate(imm, "r1", "foo:cq1", 3, "bar1");
+ mutate(imm, "r1", "foo:cq2", 3, "bar2");
+ mutate(imm, "r1", "foo:cq3", 3, "bar3");
+ mutate(imm, "r1", "foo:cq4", 3, "bar4");
+
+ MemoryIterator skvi1 = imm.skvIterator();
+
+ skvi1.seek(new Range(nk("r1", "foo:cq3", 3), null), LocalityGroupUtil.EMPTY_CF_SET, false);
+ ae(skvi1, "r1", "foo:cq3", 3, "bar3");
+
+ skvi1.seek(new Range(nk("r1", "foo:cq1", 3), null), LocalityGroupUtil.EMPTY_CF_SET, false);
+ ae(skvi1, "r1", "foo:cq1", 3, "bar1");
+
+ }
}