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

Alexey Scherbakov updated IGNITE-13395:
---------------------------------------
    Description: 
Currently we have two ways to prevent a partition from being evicted if it's no 
longer the owner by affinity: 

1. "normal" reservation using GridDhtLocalPartition#reserve/release
2. "group" reservation using GridDhtPartitionsReservation, used as an 
optimization for reserving batches of partitions at once.

The second is used only for SQL queries to ensure consistent result on unstable 
topology and adds a lot of complexity to SQL engine and partition eviction 
code. In fact, the same can be achieved using only first type of reservation.

I propose to get rid of group reservations using the following algorithm:

1. On PME all owning partitions are normally reserved.
2. A query counter for topology version is introduced.
3. If a query counter reaches zero for current topVer and where is a new topVer 
incompatible with the current, previously reserved partitions are released.

Using such approach it's possible to totally remove any reservation management 
from SQL engine (except maintaining a counter), make it more simple and 
efficient.


  was:
Currently we have two ways to prevent a partition from being evicted if it's no 
longer the owner by affinity: 

1. "normal" reservation using GridDhtLocalPartition#reserve/release
2. "group" reservation using GridDhtPartitionsReservation, used as an 
optimization for reserving batches of partitions at once.

The second is used only for SQL queries to ensure consistent result on unstable 
topology and adds a lot of complexity to SQL engine and partition eviction 
code. In fact, the same can be achieved using only first type of reservation.

I propose to get rid of group reservations using the following algorithm:

1. On PME all owning partitions are normally reserved.
2. A query counter for topology version is introduced.
3. If a query counter reaches zero for current topVer and where is a new topVer 
incompatible with current, previously reserved partitions are released.

Using such approach it's possible to totally remove any reservation management 
from SQL engine (except maintaining a counter), make it more simple and 
efficient.



> Get rid of partition group reservations.
> ----------------------------------------
>
>                 Key: IGNITE-13395
>                 URL: https://issues.apache.org/jira/browse/IGNITE-13395
>             Project: Ignite
>          Issue Type: Improvement
>    Affects Versions: 2.9
>            Reporter: Alexey Scherbakov
>            Priority: Major
>             Fix For: 2.10
>
>
> Currently we have two ways to prevent a partition from being evicted if it's 
> no longer the owner by affinity: 
> 1. "normal" reservation using GridDhtLocalPartition#reserve/release
> 2. "group" reservation using GridDhtPartitionsReservation, used as an 
> optimization for reserving batches of partitions at once.
> The second is used only for SQL queries to ensure consistent result on 
> unstable topology and adds a lot of complexity to SQL engine and partition 
> eviction code. In fact, the same can be achieved using only first type of 
> reservation.
> I propose to get rid of group reservations using the following algorithm:
> 1. On PME all owning partitions are normally reserved.
> 2. A query counter for topology version is introduced.
> 3. If a query counter reaches zero for current topVer and where is a new 
> topVer incompatible with the current, previously reserved partitions are 
> released.
> Using such approach it's possible to totally remove any reservation 
> management from SQL engine (except maintaining a counter), make it more 
> simple and efficient.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to