File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ redis.add_commands("sentinel")
3939local get_master = require (" resty.redis.sentinel" ).get_master
4040local get_slaves = require (" resty.redis.sentinel" ).get_slaves
4141
42+ local slave_rr_counter = 0
4243
4344-- A metatable which prevents undefined fields from being created / accessed
4445local fixed_field_metatable = {
@@ -262,6 +263,19 @@ function _M.connect(self, params)
262263end
263264
264265
266+ local function rotate_slaves (slaves )
267+ local rotated_slaves = {}
268+ local local_rr_counter = (slave_rr_counter + 1 ) % # slaves
269+ slave_rr_counter = local_rr_counter
270+
271+ for i , _ in ipairs (slaves ) do
272+ local_rr_counter = (local_rr_counter % # slaves ) + 1
273+ rotated_slaves [i ] = slaves [local_rr_counter ]
274+ end
275+
276+ return rotated_slaves
277+ end
278+
265279local function sort_by_localhost (a , b )
266280 if a .host == " 127.0.0.1" and b .host ~= " 127.0.0.1" then
267281 return true
@@ -319,6 +333,7 @@ function _M.connect_via_sentinel(self, params)
319333
320334 sentnl :set_keepalive ()
321335
336+ slaves = rotate_slaves (slaves )
322337 -- Put any slaves on 127.0.0.1 at the front
323338 tbl_sort (slaves , sort_by_localhost )
324339
You can’t perform that action at this time.
0 commit comments