mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #6475 from fanminshi/leaseparallel
etcdserver: parallelize expired leases process
This commit is contained in:
commit
b586060812
@ -81,6 +81,9 @@ const (
|
|||||||
maxInFlightMsgSnap = 16
|
maxInFlightMsgSnap = 16
|
||||||
|
|
||||||
releaseDelayAfterSnapshot = 30 * time.Second
|
releaseDelayAfterSnapshot = 30 * time.Second
|
||||||
|
|
||||||
|
// maxPendingRevokes is the maximum number of outstanding expired lease revocations.
|
||||||
|
maxPendingRevokes = 16
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -619,8 +622,19 @@ func (s *EtcdServer) run() {
|
|||||||
sched.Schedule(f)
|
sched.Schedule(f)
|
||||||
case leases := <-expiredLeaseC:
|
case leases := <-expiredLeaseC:
|
||||||
s.goAttach(func() {
|
s.goAttach(func() {
|
||||||
for _, l := range leases {
|
// Increases throughput of expired leases deletion process through parallelization
|
||||||
s.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: int64(l.ID)})
|
c := make(chan struct{}, maxPendingRevokes)
|
||||||
|
for _, lease := range leases {
|
||||||
|
select {
|
||||||
|
case c <- struct{}{}:
|
||||||
|
case <-s.stopping:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
lid := lease.ID
|
||||||
|
s.goAttach(func() {
|
||||||
|
s.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: int64(lid)})
|
||||||
|
<-c
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
case err := <-s.errorc:
|
case err := <-s.errorc:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user