Pavel Kovalenko created IGNITE-8405:
---------------------------------------

             Summary: Sql query may see intermediate results of topology 
changes and do mapping incorrectly
                 Key: IGNITE-8405
                 URL: https://issues.apache.org/jira/browse/IGNITE-8405
             Project: Ignite
          Issue Type: Bug
          Components: cache, sql
    Affects Versions: 2.4
            Reporter: Pavel Kovalenko
            Assignee: Pavel Kovalenko


Affected test: IgniteStableBaselineCacheQueryNodeRestartsSelfTest

Sql query do mapping in following way:
1) If there is at least 1 moving partition query will be mapped to current 
partition owners
2) In other case affinity mapping will be used.

In case of first approach query may see not final partition state if mapping 
happens during PME. There is "setOwners()" method which does partition movement 
one-by-one, each time obtaining topology write lock. If query mapping happens 
in this time it may see that there is some moving partition and performed 
mapping to OWNING partition which will be moved to MOVING on next "setOwners()" 
invocation.

As result we may query from invalid partitions.

As intermediate solution "setOwners()" method should be refactored in a batch 
way to perform ALL partitions state changes to MOVING in one operation.

As general solution query mapping should be revisited, especially 
"isPreloadingActive" method, to take into account given topology version.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to