Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


IDIEP-70
Author
Sponsor
Created

  

Status
Status
colourGrey
titleDRAFT


Table of Contents

Motivation

// Define the problem to be solved.

Cache and Compute async operations invoke the future listeners on Ignite thread pools, such as Public pool and Striped pool:

Code Block
languagejava
IgniteFuture fut = cache.putAsync(1, 1);
fut.listen(f -> {
    // Executes on Striped pool and causes a deadlock
    cache.replace(1, 2);
});

Users are supposed to be aware of this and handle it manually, however:

  • This behavior is unexpected
  • Users should carefully read the docs to know about this
  • Handling this manually is verbose and error-prone

The problem is more pronounced in Ignite.NET:

  • async/await exists for a long time and most code bases are async
  • async/await sugar somewhat makes this less obvious
  • custom thread pools are less common


Description

// Provide the design of the solution.

...

// Links to various reference documents, if applicable.

Tickets


Jira
serverASF JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQuerylabels=iep-70
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
// Links or report with relevant JIRA tickets.