You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (Jira)" <ji...@apache.org> on 2023/04/05 09:52:00 UTC

[jira] [Assigned] (IGNITE-18958) Implement handling of lease grant responses on placement driver side

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

Vyacheslav Koptilin reassigned IGNITE-18958:
--------------------------------------------

    Assignee:     (was: Alexander Lapin)

> Implement handling of lease grant responses on placement driver side
> --------------------------------------------------------------------
>
>                 Key: IGNITE-18958
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18958
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> The active actor of placement driver should handle lease grant responses from replicas, other nodes of placement driver should discard such messages.
> Lease grant response should either contain "ok" acceptance flag, meaning that the replica (leaseholder candidate) accepted the assigned role of primary replica, or redirect proposal, meaning that the replica proposes another node, which is a member of replication group, for this role. In the first case, the placement driver should make the invoke to meta storage in order to promote the leaseholder candidate to actual leaseholder, with the same lease expiration timestamp as it was initiated for candidate. In the second case, the placement driver should consider the redirect proposal using leaseholder balancer (see IGNITE-18879 ) and make decision to assign the candidate to the proposed node (and send a new LeaseGrantMessage to it) or force assign the leaseholder role to the same candidate. 
> Pseudocode:
>  
> {code:java}
> onLeaseGrantResponse(leaseGrantResponse) {
>     leaseExpirationTime = leaseGrantResponse.leaseExpirationTime
>     if (leaseGrantResponse.redirectProposal) {
>         leaseCandidateNew = leaseBalancer.considerRedirectProposal(leaseGrantResponse.sender, leaseGrantResponse.redirectProposal);
>         if (invokeMetaStorage(grantLease(leaseCandidateNew, leaseExpirationTime))) {
>             sendLeaseGrantMessage(leaseCandidateNew, leaseExpirationTime, force) // force lease grant message
>         }
>     } else {
>         assert(leaseGrantResponse.accepted)
>         leaseholder = leaseGrantResponse.sender
>         invokeMetaStorage(leaseConfirmed(leaseholder, leaseExpirationTime))
>     }
> }{code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)