You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

IDIEP-51
Author
Sponsor
Created

  

Status

DRAFT


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:

  1. GridNioServer
    • Pros:
      • Easy to use, provides Future-based API
      • No extra dependencies
      • Supports multiplexing (shared worker thread group across multiple connections)
    • Cons:
      • Possibly not future proof - Ignite 3.0 may change how GridNioServer works and/or switch to Netty
  2. Netty
    • Pros:
      • Easy to use, provides Future-based API
      • Supports multiplexing (shared worker thread group (EventLoopGroup) across multiple connections)
      • Proven performance
    • Cons:
      • New dependency in core module
  3. Perform writes in a separate thread (use dedicated thread or ForkJoinPool.commonPool)
    • Pros:
      • No dependencies
    • Cons:
      • Increased resource usage,
      • More manual thread management - hard to get right and fast
  4. AsynchronousSocketChannel

As a result of dev list discussions (see links below), it is decided to use GridNioServer.

Discussion Links

Dev List:

Tickets


Unable to render Jira issues macro, execution error.

  • No labels