You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Ivan Bella (JIRA)" <ji...@apache.org> on 2016/10/04 18:42:20 UTC

[jira] [Comment Edited] (ACCUMULO-4483) NegativeArraySizeException from scan thread right after minor compaction

    [ https://issues.apache.org/jira/browse/ACCUMULO-4483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15546268#comment-15546268 ] 

Ivan Bella edited comment on ACCUMULO-4483 at 10/4/16 6:42 PM:
---------------------------------------------------------------

The underlying iterator in this case is the RFile.LocalityGroupReader.  The seek is called several times in sequence.  The second time it manages to pass through and leave the RelativeKey rf and the Value val with the same value.  This is OK, however the MemValue.decode method should not be calling Value.set on the original value.  It should be fairly easy to reproduce this in a test case.



was (Author: ivan.bella):
The underlying iterator in this case is the RFile.LocalityGroupReader.  The seek is several times in sequence.  The second time it manages to pass through and leave the RelativeKey rf and the Value val with the same value.  This is OK, however the MemValue.decode method should not be calling Value.set on the original value.  It should be fairly easy to reproduce this in a test case.


> NegativeArraySizeException from scan thread right after minor compaction
> ------------------------------------------------------------------------
>
>                 Key: ACCUMULO-4483
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4483
>             Project: Accumulo
>          Issue Type: Bug
>          Components: tserver
>    Affects Versions: 1.8.0
>         Environment: Accumulo 1.8.0
> Java 1.8.0_72
>            Reporter: Dave Marion
>            Priority: Blocker
>             Fix For: 1.8.1
>
>
> I have been getting NegativeArraySizeExceptions after upgrading to Accumulo 1.8.0. I have tracked it down to 2 or more concurrent scans on a tablet that has just undergone minor compaction. The minor compaction thread writes the in-memory map to a local temporary rfile and tries to switch the current iterators to use it instead of the native map. The iterator code in the scan thread may also switch itself to use the local temporary rfile it if notices it before the minor compaction threads performs the switch. This all works up to this point. Shortly after the switch one of the iterator threads will get a NegativeArraySizeException from:
> SourceSwitchingIterator.seek() -> SourceSwitchingIterator.readNext() -> MemKeyConversionIterator.seek() -> MemKeyConversionIterator.getTopKeyValue() ->MemValue.decode(). I added a bunch of logging to find that the length of the byte array passed to MemValue.decode is zero.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)