[ 
https://issues.apache.org/jira/browse/ACCUMULO-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesse Yates updated ACCUMULO-53:
--------------------------------

    Attachment: java_ACCUMULO-53_v2.patch

Switching ScannerOptions to just keep a map of iterator settings.

Kept BatchDeleter's setting of iterator in the constructor since it is going to 
be much more efficient to just set it once, rather than do a lookup on the keys 
and then add it, every time. Only issue is the case where people are messing 
with the iterators settings on the deleter, and if you are doing that, you 
should know what you are doing (since you are messing with the internals).
                
> Multiple deletes cause a RuntimeException
> -----------------------------------------
>
>                 Key: ACCUMULO-53
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-53
>             Project: Accumulo
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 1.3.5, 1.4.0
>            Reporter: Jesse Yates
>            Assignee: Jesse Yates
>         Attachments: java_ACCUMULO-53.patch, java_ACCUMULO-53_v2.patch
>
>
> Pretty sure this affects 1.3.5, though it may also on 1.4.0 (haven't tested 
> on the latter, but the code looks the same).
> When a BatchDeleter is used multiple times on the same time, it doesn't reset 
> the scan iterators, leading to runtime exceptions when there are multiple 
> calls to delete().
> Below, we can see that it adds a scan iterator to get the list of values in 
> the table. Since it just sets the name of the deleter to 
> "org.apache.accumulo.core.client.BatchDeleter.NOVALUE" every time. So when 
> you go to run the scan a second time, it attempts set the same scan iterator 
> again.
> {code}
>       public void delete() throws MutationsRejectedException, 
> TableNotFoundException {
>               super.addScanIterator(new IteratorSetting(Integer.MAX_VALUE, 
> BatchDeleter.class.getName() + ".NOVALUE", SortedKeyIterator.class));
> {code}
> This results in a RuntimeException telling you that the 'Iterator name is 
> already in use'.
> After doing the delete, the BatchDeleter should remove that iterator 
> (possibly just clear all iterators) when done with the delete.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to