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

Matthieu Morel commented on S4-134:
-----------------------------------

Nicely spotted, thanks!

Will fix asap - need to document that in the meantime.
                
> Wrong way of using TimeUnit conversion in setTrigger()
> ------------------------------------------------------
>
>                 Key: S4-134
>                 URL: https://issues.apache.org/jira/browse/S4-134
>             Project: Apache S4
>          Issue Type: Bug
>    Affects Versions: 0.5.0, 0.6, generic
>         Environment: CentOS 5.8 x86_64
>            Reporter: Qian LIN
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> [File] 
> ProcessingElement.java
> [Function] 
> public ProcessingElement setTrigger(Class<? extends Event> eventType, int 
> numEvents, long interval, TimeUnit timeUnit)
> [Description] 
> Before instantiating the trigger, the function checks the TimeUnit and does 
> conversion, if necessary, since S4 uniformly uses millisecond to configure 
> timers internally. See the code below:
>         if (timeUnit != null && timeUnit != TimeUnit.MILLISECONDS) {
>             interval = timeUnit.convert(interval, TimeUnit.MILLISECONDS);
>         }
> The purpose of this code is to do conversion if the TimeUnit is not 
> MILLISECONDS. However, using the method of convert() is incorrect here. See 
> the Java API doc for reference.
> [Impact] 
> Using TimeUnit other than MILLISECONDS (e.g., SECONDS) to call setTrigger() 
> will get unexpected timeout interval.
> [Fix] 
> The right code should be as follows:
>         if (timeUnit != null && timeUnit != TimeUnit.MILLISECONDS) {
>             interval = TimeUnit.MILLISECONDS.convert(interval, timeUnit);
>         }
> Or, more concisely, 
>         if (timeUnit != null && timeUnit != TimeUnit.MILLISECONDS) {
>             interval = timeUnit.toMillis(interval);
>         }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to