You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Konstantin Orlov (Jira)" <ji...@apache.org> on 2024/03/04 14:41:00 UTC

[jira] [Updated] (IGNITE-21668) Sql. Deadlock in sorted exchange

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

Konstantin Orlov updated IGNITE-21668:
--------------------------------------
    Description: 
Assume the following execution graph:
{code:java}
         f1n1   f1n2
           |  X  |
         f2n3   f2n4
{code}
For simplicity, let there be only one column of type integer. If data both distributed and sorted by this very column, then we may end up in a situation, where exchange won't be able to proceed because every fragment will be blocked by another party. In the example above, let f1n1 expects odd numbers, while f1n2 expects even. If f2n3 contains only odd numbers, and f2n4 contains only even numbers, then both exchanges will never get response from another party, thus won't be able to proceed.

Proposed solution is to disable order-preserving exchange in cases where target distribution is not single.

  was:
Assume the following execution graph:
{code}
         f1n1    f1n2
           |    X    |
        f2n3   f2n4
{code}

For simplicity, let there be only one column of type integer. If data both distributed and sorted by this very column, then we may end up in a situation, where exchange won't be able to proceed because every fragment will be blocked by another party. In the example above, let f1n1 expects odd numbers, while f1n2 expects even. If f2n3 contains only odd numbers, and f2n4 contains only even numbers, then both exchanges will never get response from another party, thus won't be able to proceed.

Proposed solution is to disable order-preserving exchange in cases where target distribution is not single.



> Sql. Deadlock in sorted exchange
> --------------------------------
>
>                 Key: IGNITE-21668
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21668
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Konstantin Orlov
>            Priority: Major
>              Labels: ignite-3
>
> Assume the following execution graph:
> {code:java}
>          f1n1   f1n2
>            |  X  |
>          f2n3   f2n4
> {code}
> For simplicity, let there be only one column of type integer. If data both distributed and sorted by this very column, then we may end up in a situation, where exchange won't be able to proceed because every fragment will be blocked by another party. In the example above, let f1n1 expects odd numbers, while f1n2 expects even. If f2n3 contains only odd numbers, and f2n4 contains only even numbers, then both exchanges will never get response from another party, thus won't be able to proceed.
> Proposed solution is to disable order-preserving exchange in cases where target distribution is not single.



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