Skip to content

Commit

Permalink
lease: fix memory leak in LeaseGrant when node is follower
Browse files Browse the repository at this point in the history
  • Loading branch information
tangcong committed Mar 29, 2020
1 parent 3ac7a11 commit b1da829
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lease/lessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down Expand Up @@ -505,6 +505,7 @@ func (le *lessor) Demote() {
}

le.clearScheduledLeasesCheckpoints()
le.clearLeaseExpiredNotifier()

if le.demotec != nil {
close(le.demotec)
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit b1da829

Please sign in to comment.