@@ -169,13 +169,13 @@ func newBaseWorker(options baseWorkerOptions, logger *zap.Logger, metricsScope t
169169 ctx , cancel := context .WithCancel (context .Background ())
170170
171171 concurrency := & worker.ConcurrencyLimit {
172- PollerPermit : worker .NewPermit (options .pollerCount ),
173- TaskPermit : worker .NewPermit (options .maxConcurrentTask ),
172+ PollerPermit : worker .NewResizablePermit (options .pollerCount ),
173+ TaskPermit : worker .NewChannelPermit (options .maxConcurrentTask ),
174174 }
175175
176176 var pollerAS * pollerAutoScaler
177177 if pollerOptions := options .pollerAutoScaler ; pollerOptions .Enabled {
178- concurrency .PollerPermit = worker .NewPermit (pollerOptions .InitCount )
178+ concurrency .PollerPermit = worker .NewResizablePermit (pollerOptions .InitCount )
179179 pollerAS = newPollerScaler (
180180 pollerOptions ,
181181 logger ,
@@ -252,7 +252,7 @@ func (bw *baseWorker) runPoller() {
252252 select {
253253 case <- bw .shutdownCh :
254254 return
255- case <- bw .concurrency .TaskPermit .AcquireChan ( bw . limiterContext , & bw . shutdownWG ): // don't poll unless there is a task permit
255+ case <- bw .concurrency .TaskPermit .GetChan ( ): // don't poll unless there is a task permit
256256 // TODO move to a centralized place inside the worker
257257 // emit metrics on concurrent task permit quota and current task permit count
258258 // NOTE task permit doesn't mean there is a task running, it still needs to poll until it gets a task to process
@@ -300,10 +300,10 @@ func (bw *baseWorker) pollTask() {
300300 var task interface {}
301301
302302 if bw .pollerAutoScaler != nil {
303- if pErr := bw .pollerAutoScaler . Acquire (1 ); pErr == nil {
304- defer bw .pollerAutoScaler . Release (1 )
303+ if pErr := bw .concurrency . PollerPermit . Acquire (bw . limiterContext ); pErr == nil {
304+ defer bw .concurrency . PollerPermit . Release ()
305305 } else {
306- bw .logger .Warn ("poller auto scaler acquire error" , zap .Error (pErr ))
306+ bw .logger .Warn ("poller permit acquire error" , zap .Error (pErr ))
307307 }
308308 }
309309
@@ -339,7 +339,7 @@ func (bw *baseWorker) pollTask() {
339339 case <- bw .shutdownCh :
340340 }
341341 } else {
342- bw .concurrency .TaskPermit .Release (1 ) // poll failed, trigger a new poll by returning a task permit
342+ bw .concurrency .TaskPermit .Release () // poll failed, trigger a new poll by returning a task permit
343343 }
344344}
345345
@@ -374,7 +374,7 @@ func (bw *baseWorker) processTask(task interface{}) {
374374 }
375375
376376 if isPolledTask {
377- bw .concurrency .TaskPermit .Release (1 ) // task processed, trigger a new poll by returning a task permit
377+ bw .concurrency .TaskPermit .Release () // task processed, trigger a new poll by returning a task permit
378378 }
379379 }()
380380 err := bw .options .taskWorker .ProcessTask (task )
0 commit comments