You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 4
Next »
ID | IEP-51 |
Author | |
Sponsor | |
Created | |
Status | |
Motivation
Do not block user threads when performing async thin client operations.
IEP-51 introduced async API to the Java thin client, but socket writes are still performed on the user thread and are potentially blocking.
Description
Potential approaches to this are:
- Perform writes in a separate thread (use dedicated thread or ForkJoinPool.commonPool)
- Pros: no dependencies
- Cons: more manual thread management - hard to get right and fast
- AsynchronousSocketChannel
- Netty
- Pros:
- Greatly reduces complexity - returns ChannelFuture, which can be easily converted to IgniteClientFuture. Manual thread management goes away.
- We can share one EventLoopGroop across all TcpClientChannel instances within ReliableChannel and reduce resource usage when partition awareness is enabled
- Proven performance
- Cons:
- New dependency in core module
Discussion Links
Dev List: http://apache-ignite-developers.2346864.n4.nabble.com/IEP-51-Java-Thin-Client-Async-API-td48900.html
Tickets
Unable to render Jira issues macro, execution error.