accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Bella (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-4643) Allow iterators to interrupt themselves
Date Tue, 30 May 2017 18:16:04 GMT


Ivan Bella commented on ACCUMULO-4643:

[~kturner] You are correct in that whatever key gets sent back with the exception (or the
"interrupt" key) would have to be transformed.  In fact it would need contain enough information
such that the subsequent seek invocation (using that key as the start of the range, non-inclusive)
will allow the seek to continue where it left off.  Option #2 seemed simpler to implement
initially.  I am going to implement an option #3 where I create a interface that can be used
to extend an SKVI with methods to implement this concept instead of using an exception.  Option
#1 seemed like a potential performance problem as we would need to check the class of the
returned key on every cycle.  It is thought that an iterator that yields using an exception
would only be implemented with iterators that may do a lot of work for no gain and hence this
would happen infrequently.

> Allow iterators to interrupt themselves
> ---------------------------------------
>                 Key: ACCUMULO-4643
>                 URL:
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: tserver
>    Affects Versions: 1.8.1, 2.0.0
>            Reporter: Ivan Bella
>            Assignee: Ivan Bella
>              Labels: features
>             Fix For: 2.0.0
>          Time Spent: 6h 10m
>  Remaining Estimate: 0h
> The idea here is to allow an iterator stack to send back a special key or throw a special
exception which will allow the tablet server to tear down the scan to be rebuilt later.  This
is to handle the case where an iterator is doing a lot of work without returning results to
avoid starving out other scans.
> There are two thoughts on how to do this:
> 1) A special "interrupt" key is returned from the getTopKey call that is detected in
the Tablet.nextBatch call, is not added to the results, but is used to add an unfinished range
and results in the remaining ranges to be deemed unfinished.
> 2) An special exception is thrown from the next or seek call that included the key of
the current position, and the same actions are taken as in 1).

This message was sent by Atlassian JIRA

View raw message