@@ -37,7 +37,7 @@ const (
37
37
jobRateLimiterSuffix = "job"
38
38
39
39
// defaultRefreshInterval is the default interval to refresh the rate limiters.
40
- defaultRefreshInterval = 10 * time .Minute
40
+ defaultRefreshInterval = 3 * time .Minute
41
41
)
42
42
43
43
// JobRateLimiter is an interface for a job rate limiter.
@@ -94,11 +94,13 @@ func NewJobRateLimiter(database *database.Database) (JobRateLimiter, error) {
94
94
func (j * jobRateLimiter ) TakeByClusterID (ctx context.Context , clusterID uint , tokens int64 ) (time.Duration , error ) {
95
95
rawLimiter , loaded := j .clusters .Load (clusterID )
96
96
if ! loaded {
97
+ logger .Errorf ("[job-rate-limiter]: cluster %d not found" , clusterID )
97
98
return 0 , fmt .Errorf ("cluster %d not found" , clusterID )
98
99
}
99
100
100
101
limiter , ok := rawLimiter .(* limiters.TokenBucket )
101
102
if ! ok {
103
+ logger .Errorf ("[job-rate-limiter]: cluster %d is not a distributed rate limiter" , clusterID )
102
104
return 0 , fmt .Errorf ("cluster %d is not a distributed rate limiter" , clusterID )
103
105
}
104
106
@@ -123,9 +125,9 @@ func (j *jobRateLimiter) Serve() {
123
125
for {
124
126
select {
125
127
case <- tick .C :
126
- logger .Infof ("refresh job rate limiter started" )
128
+ logger .Infof ("[job-rate-limiter]: refresh job rate limiter started" )
127
129
if err := j .refresh (context .Background ()); err != nil {
128
- logger .Errorf ("refresh job rate limiter failed: %v" , err )
130
+ logger .Errorf ("[job-rate-limiter]: refresh job rate limiter failed: %v" , err )
129
131
}
130
132
case <- j .done :
131
133
return
@@ -149,13 +151,13 @@ func (j *jobRateLimiter) refresh(ctx context.Context) error {
149
151
for _ , schedulerCluster := range schedulerClusters {
150
152
b , err := schedulerCluster .Config .MarshalJSON ()
151
153
if err != nil {
152
- logger .Errorf ("marshal scheduler cluster %d config failed: %v" , schedulerCluster .ID , err )
154
+ logger .Errorf ("[job-rate-limiter]: marshal scheduler cluster %d config failed: %v" , schedulerCluster .ID , err )
153
155
return err
154
156
}
155
157
156
158
var schedulerClusterConfig types.SchedulerClusterConfig
157
159
if err := json .Unmarshal (b , & schedulerClusterConfig ); err != nil {
158
- logger .Errorf ("unmarshal scheduler cluster %d config failed: %v" , schedulerCluster .ID , err )
160
+ logger .Errorf ("[job-rate-limiter]: unmarshal scheduler cluster %d config failed: %v" , schedulerCluster .ID , err )
159
161
return err
160
162
}
161
163
@@ -165,7 +167,7 @@ func (j *jobRateLimiter) refresh(ctx context.Context) error {
165
167
jobRateLimit = int (schedulerClusterConfig .JobRateLimit )
166
168
}
167
169
168
- logger .Debugf ("create job rate limiter for scheduler cluster %d with rate limit %d" , schedulerCluster .ID , jobRateLimit )
170
+ logger .Debugf ("[job-rate-limiter]: create job rate limiter for scheduler cluster %d with rate limit %d" , schedulerCluster .ID , jobRateLimit )
169
171
j .clusters .Store (schedulerCluster .ID ,
170
172
NewDistributedRateLimiter (j .database .RDB , j .key (schedulerCluster .ID )).TokenBucket (ctx , int64 (jobRateLimit ), time .Second ))
171
173
}
0 commit comments