mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Merge pull request #3 from sharelatex/bg-support-opts-for-cluster
add support for passing options to cluster
This commit is contained in:
commit
cf87ef7dd1
3 changed files with 25 additions and 4 deletions
|
@ -17,7 +17,10 @@ module.exports = RedisSharelatex =
|
||||||
client.healthCheck = RedisSharelatex.singleInstanceHealthCheckBuilder(client)
|
client.healthCheck = RedisSharelatex.singleInstanceHealthCheckBuilder(client)
|
||||||
else if opts.cluster?
|
else if opts.cluster?
|
||||||
Redis = require("ioredis")
|
Redis = require("ioredis")
|
||||||
client = new Redis.Cluster(opts.cluster)
|
standardOpts = _.clone(opts)
|
||||||
|
delete standardOpts.cluster
|
||||||
|
delete standardOpts.key_schema
|
||||||
|
client = new Redis.Cluster(opts.cluster, standardOpts)
|
||||||
client.healthCheck = RedisSharelatex.clusterHealthCheckBuilder(client)
|
client.healthCheck = RedisSharelatex.clusterHealthCheckBuilder(client)
|
||||||
RedisSharelatex._monkeyPatchIoredisExec(client)
|
RedisSharelatex._monkeyPatchIoredisExec(client)
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "redis-sharelatex",
|
"name": "redis-sharelatex",
|
||||||
"version": "1.0.2",
|
"version": "1.0.3",
|
||||||
"description": "Redis wrapper for node which will either use cluster, sentinal, or single instance redis",
|
"description": "Redis wrapper for node which will either use cluster, sentinal, or single instance redis",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"author": "ShareLaTeX",
|
"author": "ShareLaTeX",
|
||||||
|
|
|
@ -23,7 +23,7 @@ describe "index", ->
|
||||||
"redis":@normalRedis
|
"redis":@normalRedis
|
||||||
"ioredis": @ioredis =
|
"ioredis": @ioredis =
|
||||||
Cluster: class Cluster
|
Cluster: class Cluster
|
||||||
constructor: (@config) ->
|
constructor: (@config, @options) ->
|
||||||
@auth_pass = "1234 pass"
|
@auth_pass = "1234 pass"
|
||||||
@endpoints = [
|
@endpoints = [
|
||||||
{host: '127.0.0.1', port: 26379},
|
{host: '127.0.0.1', port: 26379},
|
||||||
|
@ -69,12 +69,30 @@ describe "index", ->
|
||||||
describe "cluster", ->
|
describe "cluster", ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
@cluster = [{"mock": "cluster"}, { "mock": "cluster2"}]
|
@cluster = [{"mock": "cluster"}, { "mock": "cluster2"}]
|
||||||
|
@extraOptions = {keepAlive:100}
|
||||||
|
@settings =
|
||||||
|
cluster: @cluster
|
||||||
|
redisOptions: @extraOptions
|
||||||
|
key_schema: {foo: (x) -> "#{x}"}
|
||||||
|
|
||||||
it "should pass the options correctly though", ->
|
it "should pass the options correctly though with no options", ->
|
||||||
client = @redis.createClient cluster: @cluster
|
client = @redis.createClient cluster: @cluster
|
||||||
assert(client instanceof @ioredis.Cluster)
|
assert(client instanceof @ioredis.Cluster)
|
||||||
client.config.should.deep.equal @cluster
|
client.config.should.deep.equal @cluster
|
||||||
|
|
||||||
|
it "should not pass the key_schema through to the driver", ->
|
||||||
|
client = @redis.createClient cluster: @cluster, key_schema: "foobar"
|
||||||
|
assert(client instanceof @ioredis.Cluster)
|
||||||
|
client.config.should.deep.equal @cluster
|
||||||
|
expect(client.options).to.deep.equal {retry_max_delay: 5000}
|
||||||
|
|
||||||
|
it "should pass the options correctly though with additional options", ->
|
||||||
|
client = @redis.createClient @settings
|
||||||
|
assert(client instanceof @ioredis.Cluster)
|
||||||
|
client.config.should.deep.equal @cluster
|
||||||
|
# need to use expect here because of _.clone in sandbox
|
||||||
|
expect(client.options).to.deep.equal {redisOptions: @extraOptions, retry_max_delay: 5000}
|
||||||
|
|
||||||
describe "monkey patch ioredis exec", ->
|
describe "monkey patch ioredis exec", ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
@callback = sinon.stub()
|
@callback = sinon.stub()
|
||||||
|
|
Loading…
Reference in a new issue