[
https://issues.apache.org/jira/browse/IGNITE-7832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16692997#comment-16692997
]
Vitaliy Biryukov commented on IGNITE-7832:
------------------------------------------
Hi, [~amashenkov].
In my opinion, we can't avoid such race with current API.
I think we should add an extra parameter to *resetLostPartitions*() method,
such as topology version or array of partitions to reset.
Also at the moment, events are recorded for each lost partition. And in the
case described in the description, users are forced to find out that the last
event has arrived before call *resetLostPartitions*().
Perhaps it would be more useful if there was one event for all partitions lost
on a particular topology version.
Thoughts?
> Ignite.resetLostPartitions() resets state under race.
> -----------------------------------------------------
>
> Key: IGNITE-7832
> URL: https://issues.apache.org/jira/browse/IGNITE-7832
> Project: Ignite
> Issue Type: Task
> Components: cache
> Reporter: Andrew Mashenkov
> Assignee: Vitaliy Biryukov
> Priority: Critical
> Fix For: 2.8
>
>
> Assume, we have event listener that detects partition loss events and apply
> some actions to recover lost data.
> After recovery process finished an Ignite.resetLostPartitions() method should
> be called to mark all lost cache partitions as healthy.
> It is possible Ignite.resetLostPartitions() will be called during exchange,
> but right before a new partition loss event will be fired.
> E.g. exchange thread own GridDhtPartitionTopologyImpl write lock in
> detectLostPartitions() method, while user thread will wait for the lock
> inside Ignite.resetLostPartitions().
> So, after a new partition loss will be detected, is will be not possible to
> abort user action and state of just lost partition will be reset.
> For that case, we should either abort resetLostPartitions() or reset
> partitions state regarding topology version provided by user some how.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)