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

Haonan Hou updated RATIS-2595:
------------------------------
    Priority: Minor  (was: Major)

> Investigate and add macOS KQueue transport support
> --------------------------------------------------
>
>                 Key: RATIS-2595
>                 URL: https://issues.apache.org/jira/browse/RATIS-2595
>             Project: Ratis
>          Issue Type: Improvement
>          Components: Netty
>            Reporter: Haonan Hou
>            Priority: Minor
>
> After investigating the macOS Netty native libraries packaged in 
> {{{}ratis-thirdparty{}}}, it looks like the macOS KQueue transport is 
> currently not used by Ratis at runtime.
> {{ratis-thirdparty-misc}} packages {{netty-transport-native-kqueue}} for 
> macOS, but Ratis currently only selects Epoll when available and otherwise 
> falls back to NIO. There is no KQueue branch in {{{}NettyUtils{}}}.
> Evidence:
>  * {{NettyUtils.newEventLoopGroup(...)}} checks {{Epoll.isAvailable()}} when 
> native transport is enabled.
>  * If Epoll is unavailable, it falls back to {{{}NioEventLoopGroup{}}}.
>  * {{NettyUtils.getSocketChannelClass(...)}} and 
> {{getServerChannelClass(...)}} only choose between Epoll and NIO channel 
> classes.
>  * There is no usage of {{{}KQueueEventLoopGroup{}}}, 
> {{{}KQueueSocketChannel{}}}, or {{{}KQueueServerSocketChannel{}}}.
> This seems to be historical behavior rather than an intentional design 
> decision, since the macOS native transport libraries are already packaged in 
> {{{}ratis-thirdparty{}}}.
> *Acceptance Criteria*
>  * Decide whether Ratis should support KQueue on macOS.
>  * If yes, add KQueue support to the Netty event loop/channel selection logic.
>  * Preserve existing Linux Epoll and fallback NIO behavior.
>  * Add/update tests for native transport selection where feasible.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to