|
@@ -99,6 +99,9 @@ type Lessor interface {
|
|
|
// Lookup gives the lease at a given lease id, if any
|
|
// Lookup gives the lease at a given lease id, if any
|
|
|
Lookup(id LeaseID) *Lease
|
|
Lookup(id LeaseID) *Lease
|
|
|
|
|
|
|
|
|
|
+ // Leases lists all leases.
|
|
|
|
|
+ Leases() []*Lease
|
|
|
|
|
+
|
|
|
// ExpiredLeasesC returns a chan that is used to receive expired leases.
|
|
// ExpiredLeasesC returns a chan that is used to receive expired leases.
|
|
|
ExpiredLeasesC() <-chan []*Lease
|
|
ExpiredLeasesC() <-chan []*Lease
|
|
|
|
|
|
|
@@ -317,6 +320,22 @@ func (le *lessor) Lookup(id LeaseID) *Lease {
|
|
|
return le.leaseMap[id]
|
|
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) {
|
|
func (le *lessor) Promote(extend time.Duration) {
|
|
|
le.mu.Lock()
|
|
le.mu.Lock()
|
|
|
defer le.mu.Unlock()
|
|
defer le.mu.Unlock()
|
|
@@ -334,11 +353,7 @@ func (le *lessor) Promote(extend time.Duration) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// adjust expiries in case of overlap
|
|
// 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()
|
|
baseWindow := leases[0].Remaining()
|
|
|
nextWindow := baseWindow + time.Second
|
|
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) Lookup(id LeaseID) *Lease { return nil }
|
|
|
|
|
|
|
|
|
|
+func (le *FakeLessor) Leases() []*Lease { return nil }
|
|
|
|
|
+
|
|
|
func (fl *FakeLessor) ExpiredLeasesC() <-chan []*Lease { return nil }
|
|
func (fl *FakeLessor) ExpiredLeasesC() <-chan []*Lease { return nil }
|
|
|
|
|
|
|
|
func (fl *FakeLessor) Recover(b backend.Backend, rd RangeDeleter) {}
|
|
func (fl *FakeLessor) Recover(b backend.Backend, rd RangeDeleter) {}
|