mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
lease: fix memory leak in LeaseGrant when node is follower
This commit is contained in:
parent
3ac7a11515
commit
b1da829844
@ -291,14 +291,14 @@ func (le *lessor) Grant(id LeaseID, ttl int64) (*Lease, error) {
|
||||
}
|
||||
|
||||
le.leaseMap[id] = l
|
||||
item := &LeaseWithTime{id: l.ID, time: l.expiry.UnixNano()}
|
||||
le.leaseExpiredNotifier.RegisterOrUpdate(item)
|
||||
l.persistTo(le.b)
|
||||
|
||||
leaseTotalTTLs.Observe(float64(l.ttl))
|
||||
leaseGranted.Inc()
|
||||
|
||||
if le.isPrimary() {
|
||||
item := &LeaseWithTime{id: l.ID, time: l.expiry.UnixNano()}
|
||||
le.leaseExpiredNotifier.RegisterOrUpdate(item)
|
||||
le.scheduleCheckpointIfNeeded(l)
|
||||
}
|
||||
|
||||
@ -505,6 +505,7 @@ func (le *lessor) Demote() {
|
||||
}
|
||||
|
||||
le.clearScheduledLeasesCheckpoints()
|
||||
le.clearLeaseExpiredNotifier()
|
||||
|
||||
if le.demotec != nil {
|
||||
close(le.demotec)
|
||||
@ -648,6 +649,10 @@ func (le *lessor) clearScheduledLeasesCheckpoints() {
|
||||
le.leaseCheckpointHeap = make(LeaseQueue, 0)
|
||||
}
|
||||
|
||||
func (le *lessor) clearLeaseExpiredNotifier() {
|
||||
le.leaseExpiredNotifier = newLeaseExpiredNotifier()
|
||||
}
|
||||
|
||||
// expireExists returns true if expiry items exist.
|
||||
// It pops only when expiry item exists.
|
||||
// "next" is true, to indicate that it may exist in next attempt.
|
||||
|
Loading…
x
Reference in New Issue
Block a user