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

Roman Puchkovskiy updated IGNITE-21848:
---------------------------------------
    Description: 
Public APIs that return CompletableFuture instances need protection that would 
not allow users to execute their code in Ignite internal threads (in which the 
futures get completed). This is done by switching to an 'async continuation 
executor' upon completion of such futures (by default the common FJP is used as 
such an executor).

But when we use the same public APIs internally, we don't need this protection 
(Thin client handler is an example). So we need a separate 'entry' to use the 
same APIs without this protection.

This can be achieved easily by moving the anti-hijack logic to wrappers (aka 
decorators) that are only applied when going through the public APIs. The 
internal components can use under-the-hood implementations directly, thus 
bypassing the wrappers.

  was:
Public APIs that return CompletableFuture instances need protection that would 
not allow users to execute their code in Ignite internal threads (in which the 
futures get completed). This is done by switching to an 'async continuation 
executor' upon completion of such futures (by default the common FJP is used as 
such an executor).

But when we use the same public APIs internally, we don't need this protection 
(Thin client handler is an example). So we need a separate 'entry' to use the 
same APIs without this protection.


> Move thread hijack protection to wrappers
> -----------------------------------------
>
>                 Key: IGNITE-21848
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21848
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Assignee: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Public APIs that return CompletableFuture instances need protection that 
> would not allow users to execute their code in Ignite internal threads (in 
> which the futures get completed). This is done by switching to an 'async 
> continuation executor' upon completion of such futures (by default the common 
> FJP is used as such an executor).
> But when we use the same public APIs internally, we don't need this 
> protection (Thin client handler is an example). So we need a separate 'entry' 
> to use the same APIs without this protection.
> This can be achieved easily by moving the anti-hijack logic to wrappers (aka 
> decorators) that are only applied when going through the public APIs. The 
> internal components can use under-the-hood implementations directly, thus 
> bypassing the wrappers.



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

Reply via email to