Skip to content

Fix epoll_wait retry loop#14425

Merged
normanmaurer merged 2 commits intonetty:4.1from
dsidorov:epoll-timeout-decay
Nov 4, 2024
Merged

Fix epoll_wait retry loop#14425
normanmaurer merged 2 commits intonetty:4.1from
dsidorov:epoll-timeout-decay

Conversation

@dsidorov
Copy link
Copy Markdown
Contributor

Motivation:

Starting from Netty-4.1.76, scheduled tasks may be delayed or missed in applications that are regularly interrupted by signals.

Modification:

Use decaying timeout in epoll_wait retry loop - measure the time spent in an interrupted syscall, and reduce the remaining timeout value for subsequence calls.

Result:

Scheduled tasks fired off at correct time. Reproduced and verified with an example application - https://github.com/dsidorov/netty-epoll-timer-example

Fixes #14368.

Denis Sidorov and others added 2 commits October 24, 2024 08:32
Motivation:

Starting from Netty-4.1.76, scheduled tasks may be delayed or missed in applications
that are regularly interrupted by signals.

Modification:

Use decaying timeout in epoll_wait retry loop - measure the time spent in an interrupted
syscall, and reduce the remaining timeout value for subsequence calls.

Result:

Scheduled tasks fired off at correct time. Reproduced and verified with an example
application - https://github.com/dsidorov/netty-epoll-timer-example
@normanmaurer
Copy link
Copy Markdown
Member

@franz1981 @chrisvest PTAL

@normanmaurer normanmaurer added this to the 4.1.115.Final milestone Nov 4, 2024
@normanmaurer normanmaurer merged commit b68a71d into netty:4.1 Nov 4, 2024
@normanmaurer
Copy link
Copy Markdown
Member

@dsidorov thanks a lot!

normanmaurer pushed a commit that referenced this pull request Nov 4, 2024
Motivation:

Starting from Netty-4.1.76, scheduled tasks may be delayed or missed in
applications that are regularly interrupted by signals.

Modification:

Use decaying timeout in epoll_wait retry loop - measure the time spent
in an interrupted syscall, and reduce the remaining timeout value for
subsequence calls.

Result:

Scheduled tasks fired off at correct time. Reproduced and verified with
an example application -
https://github.com/dsidorov/netty-epoll-timer-example

Fixes #14368.

---------

Co-authored-by: Denis Sidorov <sidorovd@amazon.com>
normanmaurer pushed a commit that referenced this pull request Nov 4, 2024
Motivation:

Starting from Netty-4.1.76, scheduled tasks may be delayed or missed in
applications that are regularly interrupted by signals.

Modification:

Use decaying timeout in epoll_wait retry loop - measure the time spent
in an interrupted syscall, and reduce the remaining timeout value for
subsequence calls.

Result:

Scheduled tasks fired off at correct time. Reproduced and verified with
an example application -
https://github.com/dsidorov/netty-epoll-timer-example

Fixes #14368.

---------

Co-authored-by: Denis Sidorov <sidorovd@amazon.com>
adwsingh added a commit to adwsingh/netty that referenced this pull request Feb 9, 2026
The deadline computation in netty_epoll_wait divided tv_nsec by 1000
(producing microseconds) instead of 1000000 (producing milliseconds).
Since all other values in the expression are in milliseconds, this
caused the nanosecond component to be ~1000x too large, corrupting
the deadline and defeating the decaying timeout logic introduced in
PR netty#14425.
adwsingh added a commit to adwsingh/netty that referenced this pull request Feb 9, 2026
The deadline computation in netty_epoll_wait divided tv_nsec by 1000
(producing microseconds) instead of 1000000 (producing milliseconds).
Since all other values in the expression are in milliseconds, this
caused the nanosecond component to be ~1000x too large, corrupting
the deadline and defeating the decaying timeout logic introduced in
PR netty#14425.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tasks scheduled on EpollEventLoop are delayed in 4.1.76

3 participants