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

Sean Busbey commented on ACCUMULO-1897:
---------------------------------------

I believe this constructor can be removed.

# AFAICT, it's only used in the deepCopy implementation. 
# [the API for deepCopy says that it makes a copy as if seek() has not been 
called|http://accumulo.apache.org/1.5/apidocs/org/apache/accumulo/core/iterators/SortedKeyValueIterator.html#deepCopy(org.apache.accumulo.core.iterators.IteratorEnvironment)]
# all of the other methods require a seek call before they can be used
# seek overwrites currKey

Rather than add a test to express this error and fix it, we should pull the 
Constructor and update deepCopy to use the single argument constructor.

> Bug in MemKeyConversionIterator constructor
> -------------------------------------------
>
>                 Key: ACCUMULO-1897
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1897
>             Project: Accumulo
>          Issue Type: Bug
>          Components: tserver
>    Affects Versions: 1.5.0, 1.5.1
>            Reporter: Bill Havanki
>             Fix For: 1.5.2, 1.6.0
>
>
> The constructor for {{InMemoryMap.MemKeyConversionIterator}} which takes a 
> starting key does not correctly clone the key. The parameter to the 
> constructor is {{startKey}}, but the code looks at the {{currKey}} field to 
> check whether a key is available.
> {code:java}
> if (currKey != null)  // <- should be startKey != null
>         currKey = (MemKey) startKey.clone();
> {code}
> This class was introduced in version 1.5.0, and is not present in 1.4.x.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to