accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher <>
Subject Re: Knowing when an iterator is at the "last row/entry"
Date Tue, 07 Jan 2014 00:40:33 GMT
You can override hasTop() to log the message when getSource().hasTop()
is false. Something like:

public boolean hasTop() {
  if (!super.hasTop())
    log.debug("my message");
  return super.hasTop();

However, this won't guarantee that you will catch all occurrences.
Some scan sessions could expire and the iterator stack be torn down
and re-created before the iterator exhausts its source iterator. A
client could resume in the middle of a tablet, with a new instance of
your iterator, and the counter would be smaller, because the count
from the previous instance of the iterator will have been lost.

Christopher L Tubbs II

On Mon, Jan 6, 2014 at 7:30 PM, Terry P. <> wrote:
> Greetings folks,
> I have an iterator that extends RowFilter and I have a case where I need to
> know when its defined date format doesn't match the format of the data being
> scanned by the iterator.  I don't want to flood the tserver log with an
> error per row (how horrid that would be), but instead keep a counter of the
> number of times that error occurs during a scan or major compaction.
> Trouble is, I don't see any way to know when an iterator is on the "last
> row" or "last entry" in its scan on a tabletserver, as if I could test for
> that, I could then dump my single log message with the count of date format
> parse errors for that scan/compaction.
> Anyone know a way to determine if an iterator is at the "last entry" or
> "last row" of its execution?
> Many thanks in advance.

View raw message