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

Vyacheslav Koptilin updated IGNITE-18958:
-----------------------------------------
    Labels: iep-101 ignite-3  (was: ignite-3)

> 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
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: iep-101, ignite-3
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> 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)

Reply via email to