mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
lessor: refactor expireExists to make it more clear
Signed-off-by: qsyqian <qsyqian@gmail.com>
This commit is contained in:
parent
e24402d39f
commit
1771cec23d
@ -45,13 +45,13 @@ func TestLeaseQueue(t *testing.T) {
|
||||
}
|
||||
|
||||
existExpiredEvent := func() {
|
||||
l, ok, more := le.expireExists()
|
||||
l, more := le.expireExists()
|
||||
if l == nil {
|
||||
t.Fatalf("expect expiry lease exists")
|
||||
}
|
||||
if l.ID != 1 {
|
||||
t.Fatalf("first item expected lease ID %d, got %d", 1, l.ID)
|
||||
}
|
||||
if !ok {
|
||||
t.Fatal("expect expiry lease exists")
|
||||
}
|
||||
if more {
|
||||
t.Fatal("expect no more expiry lease")
|
||||
}
|
||||
@ -67,8 +67,8 @@ func TestLeaseQueue(t *testing.T) {
|
||||
|
||||
noExpiredEvent := func() {
|
||||
// re-acquire the expired item, nothing exists
|
||||
_, ok, more := le.expireExists()
|
||||
if ok {
|
||||
l, more := le.expireExists()
|
||||
if l != nil {
|
||||
t.Fatal("expect no expiry lease exists")
|
||||
}
|
||||
if more {
|
||||
|
@ -675,12 +675,12 @@ func (le *lessor) clearLeaseExpiredNotifier() {
|
||||
le.leaseExpiredNotifier = newLeaseExpiredNotifier()
|
||||
}
|
||||
|
||||
// expireExists returns true if expiry items exist.
|
||||
// expireExists returns "l" which is not nil if expiry items exist.
|
||||
// It pops only when expiry item exists.
|
||||
// "next" is true, to indicate that it may exist in next attempt.
|
||||
func (le *lessor) expireExists() (l *Lease, ok bool, next bool) {
|
||||
func (le *lessor) expireExists() (l *Lease, next bool) {
|
||||
if le.leaseExpiredNotifier.Len() == 0 {
|
||||
return nil, false, false
|
||||
return nil, false
|
||||
}
|
||||
|
||||
item := le.leaseExpiredNotifier.Peek()
|
||||
@ -689,19 +689,19 @@ func (le *lessor) expireExists() (l *Lease, ok bool, next bool) {
|
||||
// lease has expired or been revoked
|
||||
// no need to revoke (nothing is expiry)
|
||||
le.leaseExpiredNotifier.Unregister() // O(log N)
|
||||
return nil, false, true
|
||||
return nil, true
|
||||
}
|
||||
now := time.Now()
|
||||
if now.Before(item.time) /* item.time: expiration time */ {
|
||||
// Candidate expirations are caught up, reinsert this item
|
||||
// and no need to revoke (nothing is expiry)
|
||||
return l, false, false
|
||||
return nil, false
|
||||
}
|
||||
|
||||
// recheck if revoke is complete after retry interval
|
||||
item.time = now.Add(le.expiredLeaseRetryInterval)
|
||||
le.leaseExpiredNotifier.RegisterOrUpdate(item)
|
||||
return l, true, false
|
||||
return l, false
|
||||
}
|
||||
|
||||
// findExpiredLeases loops leases in the leaseMap until reaching expired limit
|
||||
@ -710,13 +710,10 @@ func (le *lessor) findExpiredLeases(limit int) []*Lease {
|
||||
leases := make([]*Lease, 0, 16)
|
||||
|
||||
for {
|
||||
l, ok, next := le.expireExists()
|
||||
if !ok && !next {
|
||||
l, next := le.expireExists()
|
||||
if l == nil && !next {
|
||||
break
|
||||
}
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
if next {
|
||||
continue
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user