Skip to content

Commit 5853f51

Browse files
committed
Do not expose map of different chain lengths to clients.
Change-Id: I442bc24e8f4e1df2662e8ec00fda38fb84bac366 Reviewed-on: http://review.couchbase.org/106830 Reviewed-by: Aliaksey Artamonau <[email protected]> Tested-by: Abhijeeth Nuthan <[email protected]>
1 parent 3e79fa0 commit 5853f51

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/ns_bucket.erl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,9 +378,18 @@ json_map_from_config(LocalAddr, BucketConfig) ->
378378
Config = ns_config:get(),
379379
json_map_with_full_config(LocalAddr, BucketConfig, Config).
380380

381+
equal_len_chains([]) ->
382+
[];
383+
equal_len_chains(Map) ->
384+
MaxChainLen = length(misc:min_by(fun (Chain, Max) ->
385+
length(Chain) > length(Max)
386+
end, Map)),
387+
[Chain ++ lists:duplicate(MaxChainLen - length(Chain), undefined)
388+
|| Chain <- Map].
389+
381390
json_map_with_full_config(LocalAddr, BucketConfig, Config) ->
382391
NumReplicas = num_replicas(BucketConfig),
383-
EMap = proplists:get_value(map, BucketConfig, []),
392+
EMap = equal_len_chains(proplists:get_value(map, BucketConfig, [])),
384393
BucketNodes = proplists:get_value(servers, BucketConfig, []),
385394
ENodes = lists:delete(undefined, lists:usort(lists:append([BucketNodes |
386395
EMap]))),

0 commit comments

Comments
 (0)