mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-29 07:21:03 +00:00
Merge pull request #505 from sharelatex/ja-redis-cluster-refactor
Allow writing of clsi cookie cache to redis cluster secondary
This commit is contained in:
commit
9d2bdcf8da
2 changed files with 29 additions and 5 deletions
|
@ -2,6 +2,8 @@ Settings = require "settings-sharelatex"
|
|||
request = require('request')
|
||||
RedisWrapper = require("../../infrastructure/RedisWrapper")
|
||||
rclient = RedisWrapper.client("clsi_cookie")
|
||||
if Settings.redis.clsi_cookie_secondary?
|
||||
rclient_secondary = RedisWrapper.client("clsi_cookie_secondary")
|
||||
Cookie = require('cookie')
|
||||
logger = require "logger-sharelatex"
|
||||
|
||||
|
@ -42,11 +44,16 @@ module.exports = ClsiCookieManager =
|
|||
if !clsiCookiesEnabled
|
||||
return callback()
|
||||
serverId = ClsiCookieManager._parseServerIdFromResponse(response)
|
||||
if rclient_secondary?
|
||||
@_setServerIdInRedis rclient_secondary, project_id, serverId
|
||||
@_setServerIdInRedis rclient, project_id, serverId, (err) ->
|
||||
callback(err, serverId)
|
||||
|
||||
_setServerIdInRedis: (rclient, project_id, serverId, callback = (err) ->) ->
|
||||
multi = rclient.multi()
|
||||
multi.set buildKey(project_id), serverId
|
||||
multi.expire buildKey(project_id), Settings.clsiCookie.ttl
|
||||
multi.exec (err)->
|
||||
callback(err, serverId)
|
||||
multi.exec callback
|
||||
|
||||
clearServerId: (project_id, callback = (err)->)->
|
||||
if !clsiCookiesEnabled
|
||||
|
|
|
@ -34,9 +34,8 @@ describe "ClsiCookieManager", ->
|
|||
ttl:Math.random()
|
||||
key: "coooookie"
|
||||
@requires =
|
||||
"../../infrastructure/RedisWrapper":
|
||||
client: =>
|
||||
@redis
|
||||
"../../infrastructure/RedisWrapper": @RedisWrapper =
|
||||
client: => @redis
|
||||
"settings-sharelatex": @settings
|
||||
"request": @request
|
||||
|
||||
|
@ -106,6 +105,24 @@ describe "ClsiCookieManager", ->
|
|||
@ClsiCookieManager.setServerId @project_id, @response, (err, serverId)=>
|
||||
@redisMulti.exec.called.should.equal false
|
||||
done()
|
||||
|
||||
it "should also set in the secondary if secondary redis is enabled", (done) ->
|
||||
@redisSecondaryMulti =
|
||||
set:sinon.stub()
|
||||
expire:sinon.stub()
|
||||
exec:sinon.stub()
|
||||
@redis_secondary =
|
||||
multi: => @redisSecondaryMulti
|
||||
@settings.redis.clsi_cookie_secondary = {}
|
||||
@RedisWrapper.client = sinon.stub()
|
||||
@RedisWrapper.client.withArgs("clsi_cookie").returns(@redis)
|
||||
@RedisWrapper.client.withArgs("clsi_cookie_secondary").returns(@redis_secondary)
|
||||
@ClsiCookieManager = SandboxedModule.require modulePath, requires:@requires
|
||||
@ClsiCookieManager._parseServerIdFromResponse = sinon.stub().returns("clsi-8")
|
||||
@ClsiCookieManager.setServerId @project_id, @response, (err, serverId)=>
|
||||
@redisSecondaryMulti.set.calledWith("clsiserver:#{@project_id}", "clsi-8").should.equal true
|
||||
@redisSecondaryMulti.expire.calledWith("clsiserver:#{@project_id}", @settings.clsiCookie.ttl).should.equal true
|
||||
done()
|
||||
|
||||
describe "getCookieJar", ->
|
||||
|
||||
|
|
Loading…
Reference in a new issue