ramkrishna.s.vasudevan created HBASE-10826:
----------------------------------------------
Summary: PrefixTree seekTo does not seek to the correct key if the
given key is not in the exisitng kvs
Key: HBASE-10826
URL: https://issues.apache.org/jira/browse/HBASE-10826
Project: HBase
Issue Type: Bug
Components: Scanners
Affects Versions: 0.98.1, 0.96.2, 0.99.0
Reporter: ramkrishna.s.vasudevan
Assignee: ramkrishna.s.vasudevan
Priority: Critical
{code}
KeyValue kv1 = new KeyValue(Bytes.toBytes("aaa"), Bytes.toBytes("fam1"),
Bytes.toBytes("q1"),
Bytes.toBytes("val"));
writer.append(kv1);
KeyValue kv2 = new KeyValue(Bytes.toBytes("aab"), Bytes.toBytes("fam1"),
Bytes.toBytes("q1"),
Bytes.toBytes("val"));
writer.append(kv2);
KeyValue kv4 = new KeyValue(Bytes.toBytes("aac"), Bytes.toBytes("fam1"),
Bytes.toBytes("q1"),
Bytes.toBytes("val"));
writer.append(kv4);
KeyValue kv5 = new KeyValue(Bytes.toBytes("aac"), Bytes.toBytes("fam12"),
Bytes.toBytes("q2"),
Bytes.toBytes("val"));
writer.append(kv5);
{code}
{code}
KeyValue toSeek = new KeyValue(Bytes.toBytes("aac"), Bytes.toBytes("fam1"),
Bytes.toBytes("q2"), Bytes.toBytes("val"));
StoreFileScanner s = reader.getStoreFileScanner(false, false);
s.reseek(toSeek);
{code}
Now calling s.next() should point to the last KV - kv5.
Before calling s.next() it would have done a moveToPrevious since there is no
KV that exactly matches with the toSeek key.
Incase of NONE, PREFIX, DIFF, FAST_DIFF things work fine as expected.
But in case of Prefix Tree, calling reseek() points to a key that is same as
the toSeek key which does not exist at all.
Will attach a testcase that shows this problem.
--
This message was sent by Atlassian JIRA
(v6.2#6252)