From db461179c51eacff567bd14204fa46e1d406e649 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Wed, 17 Feb 2021 19:10:37 +0100 Subject: [PATCH] improve(shared-sub): Randomise the startpoint for round-robin --- src/emqx_shared_sub.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqx_shared_sub.erl b/src/emqx_shared_sub.erl index edc276f2a..ed18f1ba7 100644 --- a/src/emqx_shared_sub.erl +++ b/src/emqx_shared_sub.erl @@ -282,7 +282,7 @@ do_pick_subscriber(_Group, _Topic, hash_topic, _ClientId, SourceTopic, Count) -> 1 + erlang:phash2(SourceTopic) rem Count; do_pick_subscriber(Group, Topic, round_robin, _ClientId, _SourceTopic, Count) -> Rem = case erlang:get({shared_sub_round_robin, Group, Topic}) of - undefined -> 0; + undefined -> rand:uniform(Count) - 1; N -> (N + 1) rem Count end, _ = erlang:put({shared_sub_round_robin, Group, Topic}, Rem),