[
https://issues.apache.org/jira/browse/ACCUMULO-2131?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13896994#comment-13896994
]
Keith Turner commented on ACCUMULO-2131:
----------------------------------------
bq. While source changes, the loop condition will never be checked again after
the return true.
oh yeah, well that was not my intent. I wanted it to recheck. However for
correctness, the source does not need to be rechecked. If after getting the
new source it becomes invalid then either one key or a row will be read before
switching. Its just not switching as soon as it could in this special case.
My thinking was that getting the iterator could take a bit of time because it
may involve I/O. Therefore the new datasource could be invalidated by other
concurrent actions (like bulk import or compactions). I am not really sure if
its worth handling this special case. I would not be opposed to just changing
to an if.
> while statement used as if statement
> ------------------------------------
>
> Key: ACCUMULO-2131
> URL: https://issues.apache.org/jira/browse/ACCUMULO-2131
> Project: Accumulo
> Issue Type: Bug
> Components: tserver
> Reporter: Eric Newton
> Assignee: Keith Turner
> Priority: Trivial
> Fix For: 1.6.0
>
>
> Going through PMD output, and this looks a little sketchy in
> SourceSwitchingIterator.java:
> {noformat}
> private boolean switchSource() throws IOException {
> while (!source.isCurrent()) {
> source = source.getNewDataSource();
> iter = source.iterator();
> if (iflag != null)
> ((InterruptibleIterator) iter).setInterruptFlag(iflag);
>
> return true;
> }
>
> return false;
> }
> {noformat}
> I'm wondering if that "while" should be "if"
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)