7
"golang.org/x/time/rate"
11
deleteLimiteRater = rate.NewLimiter(rate.Inf, defaultMarkDeleteLimitBurst)
12
MaxExtentRepairLimit = 20000
13
MinExtentRepairLimit = 5
14
CurExtentRepairLimit = MaxExtentRepairLimit
15
extentRepairLimitRater chan struct{}
18
func initRepairLimit() {
19
extentRepairLimitRater = make(chan struct{}, MaxExtentRepairLimit)
20
for i := 0; i < MaxExtentRepairLimit; i++ {
21
extentRepairLimitRater <- struct{}{}
25
func requestDoExtentRepair() (err error) {
26
err = fmt.Errorf("repair limit, cannot do extentRepair")
29
case <-extentRepairLimitRater:
36
func fininshDoExtentRepair() {
38
case extentRepairLimitRater <- struct{}{}:
45
func setDoExtentRepair(value int) {
47
value = MaxExtentRepairLimit
50
if value > MaxExtentRepairLimit {
51
value = MaxExtentRepairLimit
54
if value < MinExtentRepairLimit {
55
value = MinExtentRepairLimit
58
if CurExtentRepairLimit != value {
59
CurExtentRepairLimit = value
60
close(extentRepairLimitRater)
61
extentRepairLimitRater = make(chan struct{}, CurExtentRepairLimit)
62
for i := 0; i < CurExtentRepairLimit; i++ {
63
extentRepairLimitRater <- struct{}{}
68
func DeleteLimiterWait() {
69
ctx := context.Background()
70
deleteLimiteRater.Wait(ctx)
73
func setLimiter(limiter *rate.Limiter, limitValue uint64) {