File tree 1 file changed +9
-1
lines changed
1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change 15
15
package lease
16
16
17
17
import (
18
+ "context"
18
19
"encoding/binary"
19
20
"errors"
20
21
"math"
@@ -26,11 +27,17 @@ import (
26
27
"github.com/coreos/etcd/lease/leasepb"
27
28
"github.com/coreos/etcd/mvcc/backend"
28
29
"github.com/coreos/etcd/pkg/monotime"
30
+
31
+ "golang.org/x/time/rate"
29
32
)
30
33
31
34
const (
32
35
// NoLease is a special LeaseID representing the absence of a lease.
33
36
NoLease = LeaseID (0 )
37
+
38
+ // maximum number of leases to revoke per second
39
+ // TODO: make this configurable?
40
+ leaseRevokesPerSecond = 1000
34
41
)
35
42
36
43
var (
@@ -412,7 +419,8 @@ func (le *lessor) Stop() {
412
419
func (le * lessor ) runLoop () {
413
420
defer close (le .doneC )
414
421
415
- for {
422
+ revokerLimiter := rate .NewLimiter (rate .Limit (leaseRevokesPerSecond ), leaseRevokesPerSecond )
423
+ for revokerLimiter .Wait (context .Background ()) == nil {
416
424
var ls []* Lease
417
425
418
426
le .mu .Lock ()
You can’t perform that action at this time.
0 commit comments