On Wed, Mar 28, 2018 at 11:31 PM, Toshihiro Suzuki <brfrn...@gmail.com> wrote:
> Hi folks, > > We are facing “IllegalStateException: requestSeek cannot be called on > ReversedKeyValueHeap" when using a reverse scan and the > loadColumnFamiliesOnDemand optimization is enabled. As ReversedKeyValueHeap > doesn't support requestSeek, it seems like the IllegalStateException > occurs. I have already filed this issue to HBASE-20219, please see it for > the details. > > Yeah, that seems right given how reverse is 'implemented' (or, to be more correct, not implemented). > I tried to add a server-side check to forbid such scans, but as James > mentioned in the Jira, this would have negative implications on performance. > > Which 'performance' I wonder? > I think the best solution is to make ReversedKeyValueHeap support seek if > we can. What do you guys think about the feasibility of this? > It'd be a big job given plumbing for going in reverse is just absent (Reverse Scan is just a fake on top of forward Scanning; it is not even complete just reversing on rows, not on columns in a row...). You'd add reverse on indices in blocks and the notion of 'previous' to Scanners and Streams. It'd be slow given buffering and seeks 'naturally' are aimed in the forward direction. Thanks, S > Thanks, > Toshihiro Suzuki > >