maxLease keeps track of the various ID leases that we have already achieved quorum on. This Server can hand out IDs <= maxLease, without the need for any more quorum. If a new server becomes Zero leader, they'd renew this lease and advance maxLease before handing out new IDs.
(typ pb.NumLeaseType)
| 46 | // more quorum. If a new server becomes Zero leader, they'd renew this lease and |
| 47 | // advance maxLease before handing out new IDs. |
| 48 | func (s *Server) maxLease(typ pb.NumLeaseType) uint64 { |
| 49 | s.RLock() |
| 50 | defer s.RUnlock() |
| 51 | var maxlease uint64 |
| 52 | switch typ { |
| 53 | case pb.Num_UID: |
| 54 | maxlease = s.state.MaxUID |
| 55 | case pb.Num_TXN_TS: |
| 56 | maxlease = s.state.MaxTxnTs |
| 57 | case pb.Num_NS_ID: |
| 58 | maxlease = s.state.MaxNsID |
| 59 | } |
| 60 | return maxlease |
| 61 | } |
| 62 | |
| 63 | var errServedFromMemory = errors.New("Lease was served from memory") |
| 64 |