You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Aleksandr Polovtsev (Jira)" <ji...@apache.org> on 2024/10/24 12:43:00 UTC

[jira] [Updated] (IGNITE-23536) PartitionScanPublisher can reorder requests

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

Aleksandr Polovtsev updated IGNITE-23536:
-----------------------------------------
    Description: 
{{PartitionScanPublisher}} has several problems:

# Since every {{Subscription#request}} and {{Subscription#cancel}} requests are remote requests, there's no guarantee that the order of execution on the remote node will be the same. This can lead to peculiar situations like a Cursor being cancelled before it is registered (if "cancel" arrives faster than "request"), or a Cursor being closed while still being iterated (if "cancel" and "request" are executed simultaneously).
# It is expected that all {{Subscriber}} callbacks are going to be strictly ordered. This is not true, because multiple {{request}} calls can get executed on different threads without HB relation.
# Some minute Flow contract details are not obeyed: {{onComplete}} and {{onError}} can be called even if the subscription was cancelled. {{onComplete}} can also be called after {{onError}}.

> PartitionScanPublisher can reorder requests
> -------------------------------------------
>
>                 Key: IGNITE-23536
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23536
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Aleksandr Polovtsev
>            Assignee: Aleksandr Polovtsev
>            Priority: Major
>              Labels: ignite-3
>
> {{PartitionScanPublisher}} has several problems:
> # Since every {{Subscription#request}} and {{Subscription#cancel}} requests are remote requests, there's no guarantee that the order of execution on the remote node will be the same. This can lead to peculiar situations like a Cursor being cancelled before it is registered (if "cancel" arrives faster than "request"), or a Cursor being closed while still being iterated (if "cancel" and "request" are executed simultaneously).
> # It is expected that all {{Subscriber}} callbacks are going to be strictly ordered. This is not true, because multiple {{request}} calls can get executed on different threads without HB relation.
> # Some minute Flow contract details are not obeyed: {{onComplete}} and {{onError}} can be called even if the subscription was cancelled. {{onComplete}} can also be called after {{onError}}.



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