[ https://issues.apache.org/jira/browse/IGNITE-13171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17159270#comment-17159270 ]
Alexey Scherbakov edited comment on IGNITE-13171 at 7/17/20, 1:07 PM: ---------------------------------------------------------------------- Turns out the change has become more complicated than I've expected. The list of changes: # Fixed a race with delayed partition owning (due to disabled group durability during rebalancing) and new topology event causing partitions owned while clearing (source of partition inconsistency). # Cache version calculation has been improved. A calculation has been optimized and order is now correctly synced between primary and backups. # Fixed rebalance future compatilibity issues for delayed partition owning. For now rebalance future is not completed until checkpoint is done, and correctly checked for compatibility with newer topology versions. # Removed start and end versions for transactions. # Checkpoint is triggered for each group having WAL disabled during rebalancing, so durability for a group is enabled as soon as group rebalanced. # Cache group sync future is completed only if rebalancing was finished without cancellation, meaning a data was loaded or some unrecoverable error. # Fixed partition state transtion from RENTING to OWNING/LOST when a last supplier had left. # Removed synchronous partition destroying to avoid deadlocks. All partitions now are destroyed by partition eviction manager. # Removed delay equals to DFLT_PRELOAD_RESEND_TIMEOUT before owning state is acked for a group after rebalancing. As as side effect, ideal distribution is achieved faster in unit tests. # Fixed multiple flaky tests running on unstable topology, which behavior was changed after introducing 8 and 9. # Fixed an attempt to rebalance OWNING partition if arebalance has been restarted after a cancellation. was (Author: ascherbakov): Turns out the change has become more complicated than I've expected. The list of changes: # Fixed a race with delayed partition owning (due to disabled group durability during rebalancing) and new topology event causing partitions owned while clearing (source of partition inconsistency). # Cache version calculation has been improved. A calculation has been optimized and order is now correctly synced between primary and backups. # Fixed rebalance future compatilibity issues for delayed partition owning. For now rebalance future is not completed until checkpoint is done, and correctly checked for compatibility with newer topology versions. # Removed start and end versions for transactions. # Checkpoint is triggered for each group having WAL disabled during rebalancing, so durability for a group is enabled as soon as group rebalanced. # Cache group sync future is completed only if rebalancing was finished without cancellation, meaning a data was loaded or some unrecoverable error. # Fixed partition state transtion from RENTING to OWNING/LOST when a last supplier had left. # Removed synchronous partition destroying to avoid deadlocks. All partitions now are destroyed by partition eviction manager. # Removed delay equals to DFLT_PRELOAD_RESEND_TIMEOUT before owning state is acked for a group after rebalancing. As as side effect, ideal distribution is achieved faster in unit tests. # Fixed multiple flaky tests running on unstable topology, which behavior was changed after introducing 8 and 9. # Fixed an attempt to rebalance OWNING partition after rebalance restarted after a cancellation. > Proper handling of a rebalancing with disabled WAL > -------------------------------------------------- > > Key: IGNITE-13171 > URL: https://issues.apache.org/jira/browse/IGNITE-13171 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.8 > Reporter: Alexey Scherbakov > Assignee: Alexey Scherbakov > Priority: Major > Fix For: 2.10 > > Time Spent: 10m > Remaining Estimate: 0h > > Current implementation of a optimized rebalancing with disabled WAL used when > all local partitions are MOVING and persistence is enabled has multiple flaws: > # There are races between concurrent topology change and partition owning > after a checkpoint causing consistency issues. > # Partitions will not be owned after a topology has changed and new topology > version is compatible with previous. > This is the reason for flaky tests [1] [2] > [1] > [https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=1140020093875959306&branch=%3Cdefault%3E&tab=testDetails] > [2] > https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=7421637930905964922&branch=%3Cdefault%3E&tab=testDetails -- This message was sent by Atlassian Jira (v8.3.4#803005)