[ 
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)

Reply via email to