Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Invalid
-
0.98.0, 0.99.0, 0.96.1.1
-
None
Description
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);
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);
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.