From dbe03e2757e8330ceda15f3d8f4f4e18c6ad9ee0 Mon Sep 17 00:00:00 2001 From: James Allen <james@sharelatex.com> Date: Tue, 28 Jun 2016 16:49:15 +0100 Subject: [PATCH] Track metrics of when backends match or disagree --- .../app/coffee/RedisBackend.coffee | 5 ++- .../RedisBackend/RedisBackendTests.coffee | 34 ++++++++++--------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/services/document-updater/app/coffee/RedisBackend.coffee b/services/document-updater/app/coffee/RedisBackend.coffee index ca9e3de9e7..807737510e 100644 --- a/services/document-updater/app/coffee/RedisBackend.coffee +++ b/services/document-updater/app/coffee/RedisBackend.coffee @@ -2,6 +2,7 @@ Settings = require "settings-sharelatex" async = require "async" _ = require "underscore" logger = require "logger-sharelatex" +Metrics = require "metrics-sharelatex" class Client constructor: (@clients) -> @@ -136,7 +137,9 @@ compareResults = (results) -> first = results[0] for result in results.slice(1) if not _.isEqual(first, result) - logger.warn { results }, "redis return values do not match" + Metrics.inc "backend-conflict" + else + Metrics.inc "backend-match" module.exports = createClient: () -> diff --git a/services/document-updater/test/unit/coffee/RedisBackend/RedisBackendTests.coffee b/services/document-updater/test/unit/coffee/RedisBackend/RedisBackendTests.coffee index 9ad9ea5ad4..a5cf885296 100644 --- a/services/document-updater/test/unit/coffee/RedisBackend/RedisBackendTests.coffee +++ b/services/document-updater/test/unit/coffee/RedisBackend/RedisBackendTests.coffee @@ -53,6 +53,8 @@ describe "RedisBackend", -> activeHealthCheck: sinon.stub() "ioredis": @ioredis = Cluster: Cluster + "metrics-sharelatex": + @Metrics = inc: sinon.stub() @client = @RedisBackend.createClient() @doc_id = "mock-doc-id" @@ -96,6 +98,11 @@ describe "RedisBackend", -> @rclient_ioredis.get .calledWith("doclines:{#{@doc_id}}") .should.equal true + + it "should send a metric", -> + @Metrics.inc + .calledWith("backend-match") + .should.equal true describe "with different results", -> beforeEach (done) -> @@ -110,14 +117,9 @@ describe "RedisBackend", -> it "should return the primary result", -> @result.should.equal "primary-result" - it "should log out the difference", -> - @logger.warn - .calledWith({ - results: [ - "primary-result", - "secondary-result" - ] - }, "redis return values do not match") + it "should send a metric", -> + @Metrics.inc + .calledWith("backend-conflict") .should.equal true describe "when the secondary errors", -> @@ -233,6 +235,11 @@ describe "RedisBackend", -> @rclient_ioredis.exec .called .should.equal true + + it "should send a metric", -> + @Metrics.inc + .calledWith("backend-match") + .should.equal true describe "with different results", -> beforeEach (done) -> @@ -251,14 +258,9 @@ describe "RedisBackend", -> it "should return the primary result", -> @result.should.deep.equal [@doclines, @version] - it "should log out the difference", -> - @logger.warn - .calledWith({ - results: [ - [@doclines, @version], - ["different-doc-lines", @version] - ] - }, "redis return values do not match") + it "should send a metric", -> + @Metrics.inc + .calledWith("backend-conflict") .should.equal true describe "when the secondary errors", ->