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

Clinton Begin closed IBATIS-458.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.1
         Assignee: Clinton Begin

Throttle is no more

> maxWait in Throttle can fail.
> -----------------------------
>
>                 Key: IBATIS-458
>                 URL: https://issues.apache.org/jira/browse/IBATIS-458
>             Project: iBatis for Java
>          Issue Type: Bug
>            Reporter: Niclas Hedhman
>            Assignee: Clinton Begin
>            Priority: Minor
>             Fix For: 2.3.1
>
>
> A possible bug, where it waits for the timeout:
>     LOCK.wait(maxWait - totalWaitTime);
> this is ok for the first time round the loop because maxWait is > 0 and 
> totalWaitTime == 0
> however, the subsequent check, for when the thread is interrupted mid-wait, 
> is as follows: 
>           if (totalWaitTime > maxWait) {
>             throw new RuntimeException("Throttle waited too long (" + 
> totalWaitTime + " milliseconds) for lock.");
>           }
> if totalWaitTime == maxWait then the loop will continue, and the thread will 
> wait again at: 
>     LOCK.wait(maxWait - totalWaitTime);
> but now the remaining timeout is zero, which means wait forever!
> The fix would be;
>           if (totalWaitTime >= maxWait) { 
>              throw new RuntimeException("Throttle waited too long (" + 
> totalWaitTime + " milliseconds) for lock.");
>            }
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to