avoid graphite drift in active worker count

This commit is contained in:
Brian Gough 2017-05-30 14:36:51 +01:00
parent 9a8c0fda10
commit fa089dc28d

View file

@ -11,17 +11,19 @@ module.exports = class RateLimiter
_adjustLimitUp: () -> _adjustLimitUp: () ->
@CurrentWorkerLimit += 0.1 # allow target worker limit to increase gradually @CurrentWorkerLimit += 0.1 # allow target worker limit to increase gradually
Metrics.gauge "currentLimit", Math.ceil(@CurrentWorkerLimit)
_adjustLimitDown: () -> _adjustLimitDown: () ->
@CurrentWorkerLimit = Math.max @BaseWorkerCount, (@CurrentWorkerLimit * 0.9) @CurrentWorkerLimit = Math.max @BaseWorkerCount, (@CurrentWorkerLimit * 0.9)
logger.log {currentLimit: Math.ceil(@CurrentWorkerLimit)}, "reducing rate limit" logger.log {currentLimit: Math.ceil(@CurrentWorkerLimit)}, "reducing rate limit"
Metrics.gauge "currentLimit", Math.ceil(@CurrentWorkerLimit)
_trackAndRun: (task, callback = () ->) -> _trackAndRun: (task, callback = () ->) ->
@ActiveWorkerCount++ @ActiveWorkerCount++
Metrics.gauge "processingUpdates", "+1" # increments/decrements gauge with +/- sign Metrics.gauge "processingUpdates", @ActiveWorkerCount
task (err) => task (err) =>
@ActiveWorkerCount-- @ActiveWorkerCount--
Metrics.gauge "processingUpdates", "-1" Metrics.gauge "processingUpdates", @ActiveWorkerCount
callback(err) callback(err)
run: (task, callback) -> run: (task, callback) ->