mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
lease: add 'Leases' method
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
8df21326f9
commit
099fbde809
@ -99,6 +99,9 @@ type Lessor interface {
|
||||
// Lookup gives the lease at a given lease id, if any
|
||||
Lookup(id LeaseID) *Lease
|
||||
|
||||
// Leases lists all leases.
|
||||
Leases() []*Lease
|
||||
|
||||
// ExpiredLeasesC returns a chan that is used to receive expired leases.
|
||||
ExpiredLeasesC() <-chan []*Lease
|
||||
|
||||
@ -317,6 +320,22 @@ func (le *lessor) Lookup(id LeaseID) *Lease {
|
||||
return le.leaseMap[id]
|
||||
}
|
||||
|
||||
func (le *lessor) unsafeLeases() []*Lease {
|
||||
leases := make([]*Lease, 0, len(le.leaseMap))
|
||||
for _, l := range le.leaseMap {
|
||||
leases = append(leases, l)
|
||||
}
|
||||
sort.Sort(leasesByExpiry(leases))
|
||||
return leases
|
||||
}
|
||||
|
||||
func (le *lessor) Leases() []*Lease {
|
||||
le.mu.Lock()
|
||||
ls := le.unsafeLeases()
|
||||
le.mu.Unlock()
|
||||
return ls
|
||||
}
|
||||
|
||||
func (le *lessor) Promote(extend time.Duration) {
|
||||
le.mu.Lock()
|
||||
defer le.mu.Unlock()
|
||||
@ -334,11 +353,7 @@ func (le *lessor) Promote(extend time.Duration) {
|
||||
}
|
||||
|
||||
// adjust expiries in case of overlap
|
||||
leases := make([]*Lease, 0, len(le.leaseMap))
|
||||
for _, l := range le.leaseMap {
|
||||
leases = append(leases, l)
|
||||
}
|
||||
sort.Sort(leasesByExpiry(leases))
|
||||
leases := le.unsafeLeases()
|
||||
|
||||
baseWindow := leases[0].Remaining()
|
||||
nextWindow := baseWindow + time.Second
|
||||
@ -636,6 +651,8 @@ func (fl *FakeLessor) Renew(id LeaseID) (int64, error) { return 10, nil }
|
||||
|
||||
func (le *FakeLessor) Lookup(id LeaseID) *Lease { return nil }
|
||||
|
||||
func (le *FakeLessor) Leases() []*Lease { return nil }
|
||||
|
||||
func (fl *FakeLessor) ExpiredLeasesC() <-chan []*Lease { return nil }
|
||||
|
||||
func (fl *FakeLessor) Recover(b backend.Backend, rd RangeDeleter) {}
|
||||
|
@ -72,6 +72,17 @@ func TestLessorGrant(t *testing.T) {
|
||||
t.Errorf("new lease.id = %x, want != %x", nl.ID, l.ID)
|
||||
}
|
||||
|
||||
lss := []*Lease{gl, nl}
|
||||
leases := le.Leases()
|
||||
for i := range lss {
|
||||
if lss[i].ID != leases[i].ID {
|
||||
t.Fatalf("lease ID expected %d, got %d", lss[i].ID, leases[i].ID)
|
||||
}
|
||||
if lss[i].ttl != leases[i].ttl {
|
||||
t.Fatalf("ttl expected %d, got %d", lss[i].ttl, leases[i].ttl)
|
||||
}
|
||||
}
|
||||
|
||||
be.BatchTx().Lock()
|
||||
_, vs := be.BatchTx().UnsafeRange(leaseBucketName, int64ToBytes(int64(l.ID)), nil, 0)
|
||||
if len(vs) != 1 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user