[
https://issues.apache.org/jira/browse/IGNITE-20365?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Denis Chudov resolved IGNITE-20365.
-----------------------------------
Resolution: Duplicate
Fixed by IGNITE-21382 .
> Add ability to intentionally change primary replica
> ---------------------------------------------------
>
> Key: IGNITE-20365
> URL: https://issues.apache.org/jira/browse/IGNITE-20365
> Project: Ignite
> Issue Type: Bug
> Reporter: Alexander Lapin
> Assignee: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> Some tests, e.g. testTxStateReplicaRequestMissLeaderMiss expects primary
> replica to be changed. Earlier when primary replica was collocated with
> leader refreshAndGetLeaderWithTerm was used in order to change leader and
> thus primary replica. Now when Placement driver assigns primary replica it's
> no longer the case. All in all, some PlacementDriver#changePrimaryReplica or
> similar will be useful, at least within tests.
>
> *Implementation Details*
> +Important note:+ The lease contract prohibits intersecting leases. We don't
> want to break this contract, so we will have to wait until the current lease
> ends before another replica becomes primary.
> There are two ways to implement this functionality - either extend
> {{PlacementDriver}} in the product or change only the test code. Looks like
> the second approach is not enough if we start a test ignite instance using an
> {{IgniteImpl}} class. So we might need to consider extend the production
> code. Moreover, such change might become the first step towards a graceful
> cluster reconfiguration.
> The code that is responsible for managing lease resides in {{LeaseTracker}}
> and {{LeaseUpdater}}. To do the required change we can add a pending lease
> with the start time in the future. We should make sure that both there
> places, as well as any recovery code accounts for it. Now the next lease is
> added ONLY when the current one ends.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)