accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Vines (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-1628) NPE on deep copied dumped memory iterator
Date Tue, 12 Aug 2014 15:19:13 GMT


John Vines commented on ACCUMULO-1628:

Actually, the common case for this coming up is, which calls
InMemorymap.iterator as long as it doesn't already have an iterator.

It then goes on and calls readNext(true), and the first thing it does there is {code}(!onlySwitchAfterRow
&& switchSource()) || initialSeek{code}

if onlySwitchAfterRow is false, then switchSource() is guaranteed to be called, which I believe
will handle this issue. maybe if we force switchSource() to be called when initialSeek is
true and work around the InMemoryMap.iterator call in seek() we can avoid this issue entirely.
Or maybe just incorporate a switchSource() call into seek.

> NPE on deep copied dumped memory iterator
> -----------------------------------------
>                 Key: ACCUMULO-1628
>                 URL:
>             Project: Accumulo
>          Issue Type: Bug
>    Affects Versions: 1.4.0, 1.5.0
>            Reporter: Keith Turner
>            Priority: Critical
>             Fix For: 1.5.2, 1.6.1, 1.7.0
>         Attachments: bpopp-ACCUMULO-1628.log
> Accumulo may dump memory while a scan is running and transparently switch iterators from
memory to file.  If an iterator calls deepcopy after this happens, then seek will fail on
the deep copy.
> {noformat}
> java.lang.NullPointerException
> 	at org.apache.accumulo.server.tabletserver.InMemoryMap$MemoryDataSource.iterator(
> 	at
> {noformat}

This message was sent by Atlassian JIRA

View raw message