[ https://issues.apache.org/jira/browse/HBASE-6900?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13470028#comment-13470028 ]
ramkrishna.s.vasudevan commented on HBASE-6900: ----------------------------------------------- @Lars Yes we wanted to reseek. {code} // this could be null. this.lastTop = this.peek(); {code} The above code while updating the reader says the lastTop could be null. That is why i had to add some additional checks. Anyway will analyse once more if it is fine i will take up your changes. Thanks once again. > RegionScanner.reseek() creates NPE when a flush or compaction happens before > the reseek. > ---------------------------------------------------------------------------------------- > > Key: HBASE-6900 > URL: https://issues.apache.org/jira/browse/HBASE-6900 > Project: HBase > Issue Type: Bug > Reporter: ramkrishna.s.vasudevan > Assignee: ramkrishna.s.vasudevan > Fix For: 0.94.2, 0.96.0 > > Attachments: 6900-test.txt, HBASE-6900_1.patch, HBASE-6900.patch > > > HBASE-5520 introduced reseek() on the RegionScanner. > Now when a scanner is created we have the StoreScanner heap. After this if a > flush or compaction happens parallely all the StoreScannerObservers are > cleared so that whenever a new next() call happens we tend to recreate the > scanner based on the latest store files. > The reseek() in StoreScanner expects the heap not to be null because always > reseek would be called from next() > {code} > public synchronized boolean reseek(KeyValue kv) throws IOException { > //Heap cannot be null, because this is only called from next() which > //guarantees that heap will never be null before this call. > if (explicitColumnQuery && lazySeekEnabledGlobally) { > return heap.requestSeek(kv, true, useRowColBloom); > } else { > return heap.reseek(kv); > } > } > {code} > Now when we call RegionScanner.reseek() directly using CPs we tend to get a > NPE. In our case it happened when a major compaction was going on. I will > also attach a testcase to show the problem. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira