diff --git a/services/web/app/src/Features/Compile/CompileManager.js b/services/web/app/src/Features/Compile/CompileManager.js index 62abd02059..5a41716a3e 100644 --- a/services/web/app/src/Features/Compile/CompileManager.js +++ b/services/web/app/src/Features/Compile/CompileManager.js @@ -228,12 +228,13 @@ module.exports = CompileManager = { if (!isAutoCompile) { return callback(null, true) } - Metrics.inc(`auto-compile-${compileGroup}`) + const bucket = Math.random() > 0.5 ? 'b-one' : 'b-two' + Metrics.inc(`auto-compile-${compileGroup}`, 1, { method: bucket }) const opts = { endpointName: 'auto_compile', timeInterval: 20, - subjectName: compileGroup, - throttle: Settings.rateLimit.autoCompile[compileGroup] || 25, + subjectName: `${compileGroup}-${bucket}`, + throttle: (Settings.rateLimit.autoCompile[compileGroup] || 25) / 2, } rateLimiter.addCount(opts, function (err, canCompile) { if (err) { diff --git a/services/web/test/unit/src/Compile/CompileManagerTests.js b/services/web/test/unit/src/Compile/CompileManagerTests.js index 3b7f7ef01c..18d1b9085e 100644 --- a/services/web/test/unit/src/Compile/CompileManagerTests.js +++ b/services/web/test/unit/src/Compile/CompileManagerTests.js @@ -443,8 +443,8 @@ describe('CompileManager', function () { return done(err) } const args = this.ratelimiter.addCount.args[0][0] - args.throttle.should.equal(25) - args.subjectName.should.equal('everyone') + args.throttle.should.equal(12.5) + args.subjectName.should.be.oneOf(['everyone-b-one', 'everyone-b-two']) args.timeInterval.should.equal(20) args.endpointName.should.equal('auto_compile') canCompile.should.equal(true)