[jira] [Comment Edited] (HTTPCORE-480) improve the code in check timeout

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Comment Edited] (HTTPCORE-480) improve the code in check timeout

JIRA jira@apache.org

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

silver9886 edited comment on HTTPCORE-480 at 8/2/17 3:19 PM:
-------------------------------------------------------------

you don't konw  what i mean.

I don't want to  reduce frequency of the timeout check,I just say there is no need to check the selectedKeys if there is no needed.
no matter what the value of the timeoutCheckInterval. because the selectTimeout = timeoutCheckInterval  in the code , the code :
            if (keys != null) {
                for (final SelectionKey key : keys) {
                    timeoutCheck(key, currentTime,minholdTime);
                }
            }
will be executed every time the timeout check. that means the key in the keys will be checked every time the timeout check.
for example , the session timeout set is 10 min.
but the key will be checked every 1s by default value.
but it should not be. .
if change the code as currentTime - this.lastTimeoutCheck) < this.timeoutCheckInterval + minholdTime.get(), the minholdTime.get() will return 10min.
then , the key in the keys will no be checked (of course , there is no need to check).

the user can set the selectTimeout as 10min. but it is not obviously as the user. the code should be more intelligent and modify the minholdTime.get() dynamicly。
you know not every user can read the source code and change the selectTimeout .


was (Author: silver9886):
you don't konw  what i mean.

I don't want to  reduce frequency of the timeout check,I just say there is no need to check the selectedKeys if there is no needed.
no matter what the value of the timeoutCheckInterval. because the selectTimeout = timeoutCheckInterval  in the code , the code :
            if (keys != null) {
                for (final SelectionKey key : keys) {
                    timeoutCheck(key, currentTime,minholdTime);
                }
            }
will be executed every time the timeout check. that means the key in the keys will be checked every time the timeout check.
for example , the session timeout set is 10 min.
but the key will be checked every 1s by default value.
but it should not be. .
if change the code as currentTime - this.lastTimeoutCheck) < this.timeoutCheckInterval + minholdTime.get(), the minholdTime.get() will return 10min.
then , the key in the keys will no be checked (of course , there is no need the check).

the user can set the selectTimeout as 10min. but it is not obviously as the user. the code should be more intelligent and modify the minholdTime.get() dynamicly。
you know not every user can read the source code and change the selectTimeout .

> improve the code in check timeout
> ---------------------------------
>
>                 Key: HTTPCORE-480
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-480
>             Project: HttpComponents HttpCore
>          Issue Type: Improvement
>          Components: HttpCore NIO
>    Affects Versions: 4.4.6
>            Reporter: silver9886
>            Priority: Minor
>             Fix For: 4.4.7
>
>         Attachments: AbstractIOReactor-change.png, BaseIOReactor-add class.png, BaseIOReactor-change.png
>
>
> change the code in org.apache.http.impl.nio.reactor.BaseIOReactor:
>         if( (currentTime - this.lastTimeoutCheck) >= this.timeoutCheckInterval) ->
>    if( (currentTime - this.lastTimeoutCheck) >= this.timeoutCheckInterval + 2)
> because :the code will run for a time and network tranport expend the time too.  So currentTime - this.lastTimeoutCheck should be
> larger than selectTimeout in order to check timeout. In this case , This will make the code more efficiency.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Loading...