From 74db743ffa7ac215b21ce351de1e63c6f571242a Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Fri, 24 May 2019 15:23:01 +0100 Subject: [PATCH] allow fractional drain rate --- services/real-time/app/coffee/DrainManager.coffee | 9 ++++++++- services/real-time/app/coffee/HttpApiController.coffee | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/services/real-time/app/coffee/DrainManager.coffee b/services/real-time/app/coffee/DrainManager.coffee index 92b59b0751..da6b331e23 100644 --- a/services/real-time/app/coffee/DrainManager.coffee +++ b/services/real-time/app/coffee/DrainManager.coffee @@ -6,9 +6,16 @@ module.exports = clearInterval @interval if rate == 0 return + else if rate < 1 + # allow lower drain rates + # e.g. rate=0.1 will drain one client every 10 seconds + pollingInterval = 1000 / rate + rate = 1 + else + pollingInterval = 1000 @interval = setInterval () => @reconnectNClients(io, rate) - , 1000 + , pollingInterval RECONNECTED_CLIENTS: {} reconnectNClients: (io, N) -> diff --git a/services/real-time/app/coffee/HttpApiController.coffee b/services/real-time/app/coffee/HttpApiController.coffee index a2a9d4d23c..f99bef6dd6 100644 --- a/services/real-time/app/coffee/HttpApiController.coffee +++ b/services/real-time/app/coffee/HttpApiController.coffee @@ -15,7 +15,7 @@ module.exports = HttpApiController = startDrain: (req, res, next) -> io = req.app.get("io") rate = req.query.rate or "4" - rate = parseInt(rate, 10) + rate = parseFloat(rate) || 0 logger.log {rate}, "setting client drain rate" DrainManager.startDrain io, rate res.send 204 \ No newline at end of file