Skip to content

Commit ac137fa

Browse files
committed
MB-47561 pass config into build_nodes_info_fun, which eliminates
...extra ns_config:get call from /pools/default handler Change-Id: If9d6217f439d091574d914b4edac47c84f60e2b9 Reviewed-on: http://review.couchbase.org/c/ns_server/+/158070 Well-Formed: Restriction Checker Reviewed-by: Aliaksey Artamonau <[email protected]> Tested-by: Artem Stemkovski <[email protected]>
1 parent 6130704 commit ac137fa

File tree

5 files changed

+45
-27
lines changed

5 files changed

+45
-27
lines changed

src/diag_handler.erl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,9 @@ handle_just_diag(Req, Extra) ->
476476

477477
Infos = [["nodes_info = ~p",
478478
ns_cluster:sanitize_node_info(
479-
menelaus_web_node:build_nodes_info(true, normal, unstable, misc:localhost()))],
479+
menelaus_web_node:build_nodes_info(
480+
true, normal, unstable,
481+
misc:localhost(), ns_config:get()))],
480482
["buckets = ~p", ns_config_log:sanitize(Buckets)]],
481483

482484
[begin

src/menelaus_web_buckets.erl

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,10 @@ handle_bucket_list(Req) ->
108108
_ -> for_ui
109109
end,
110110
SkipMap = proplists:get_value("skipMap", mochiweb_request:parse_qs(Req)) =:= "true",
111+
Config = ns_config:get(),
111112
BucketsInfo = [build_bucket_info(Name, undefined, InfoLevel, LocalAddr,
112-
may_expose_bucket_auth(Name, Req), SkipMap)
113+
may_expose_bucket_auth(Name, Req), SkipMap,
114+
Config)
113115
|| Name <- BucketNames],
114116
reply_json(Req, BucketsInfo).
115117

@@ -121,12 +123,15 @@ handle_bucket_info(_PoolId, Id, Req) ->
121123
SkipMap = proplists:get_value("skipMap", mochiweb_request:parse_qs(Req)) =:= "true",
122124
reply_json(Req, build_bucket_info(Id, undefined, InfoLevel,
123125
menelaus_util:local_addr(Req),
124-
may_expose_bucket_auth(Id, Req), SkipMap)).
126+
may_expose_bucket_auth(Id, Req), SkipMap,
127+
ns_config:get())).
125128

126-
build_bucket_node_infos(BucketName, BucketConfig, InfoLevel0, LocalAddr) ->
129+
build_bucket_node_infos(BucketName, BucketConfig, InfoLevel0, LocalAddr,
130+
Config) ->
127131
{InfoLevel, Stability} = convert_info_level(InfoLevel0),
128132
%% Only list nodes this bucket is mapped to
129-
F = menelaus_web_node:build_nodes_info_fun(false, InfoLevel, Stability, LocalAddr),
133+
F = menelaus_web_node:build_nodes_info_fun(
134+
false, InfoLevel, Stability, LocalAddr, Config),
130135
Nodes = ns_bucket:get_servers(BucketConfig),
131136
%% NOTE: there's potential inconsistency here between BucketConfig
132137
%% and (potentially more up-to-date) vbuckets dict. Given that
@@ -257,13 +262,14 @@ build_durability_min_level(BucketConfig) ->
257262
end.
258263

259264
build_bucket_info(Id, undefined, InfoLevel, LocalAddr, MayExposeAuth,
260-
SkipMap) ->
261-
{ok, BucketConfig} = ns_bucket:get_bucket(Id),
265+
SkipMap, Config) ->
266+
{ok, BucketConfig} = ns_bucket:get_bucket(Id, Config),
262267
build_bucket_info(Id, BucketConfig, InfoLevel, LocalAddr, MayExposeAuth,
263-
SkipMap);
268+
SkipMap, Config);
264269
build_bucket_info(Id, BucketConfig, InfoLevel, LocalAddr, MayExposeAuth,
265-
SkipMap) ->
266-
Nodes = build_bucket_node_infos(Id, BucketConfig, InfoLevel, LocalAddr),
270+
SkipMap, Config) ->
271+
Nodes = build_bucket_node_infos(Id, BucketConfig, InfoLevel, LocalAddr,
272+
Config),
267273
StatsUri = bin_concat_path(["pools", "default", "buckets", Id, "stats"]),
268274
StatsDirectoryUri = iolist_to_binary([StatsUri, <<"Directory">>]),
269275
NodeStatsListURI = bin_concat_path(["pools", "default", "buckets", Id, "nodes"]),
@@ -481,11 +487,13 @@ handle_sasl_buckets_streaming(_PoolId, Req) ->
481487
handle_bucket_info_streaming(_PoolId, Id, Req) ->
482488
LocalAddr = menelaus_util:local_addr(Req),
483489
F = fun(_Stability, _UpdateID) ->
484-
case ns_bucket:get_bucket(Id) of
490+
Config = ns_config:get(),
491+
case ns_bucket:get_bucket(Id, Config) of
485492
{ok, BucketConfig} ->
486493
Info = build_bucket_info(
487494
Id, BucketConfig, streaming, LocalAddr,
488-
may_expose_bucket_auth(Id, Req), false),
495+
may_expose_bucket_auth(Id, Req), false,
496+
Config),
489497
{just_write, Info};
490498
not_present ->
491499
exit(normal)

src/menelaus_web_groups.erl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@ build_group_uri(GroupPList) ->
3535
build_group_uri(proplists:get_value(uuid, GroupPList)).
3636

3737
handle_server_groups(Req) ->
38-
{value, Groups} = ns_config:search(server_groups),
38+
Config = ns_config:get(),
39+
{value, Groups} = ns_config:search(Config, server_groups),
3940
LocalAddr = menelaus_util:local_addr(Req),
4041
CanIncludeOtpCookie = menelaus_auth:has_permission({[admin, internal], all}, Req),
41-
Fun = menelaus_web_node:build_nodes_info_fun(CanIncludeOtpCookie, normal, unstable, LocalAddr),
42+
Fun = menelaus_web_node:build_nodes_info_fun(
43+
CanIncludeOtpCookie, normal, unstable, LocalAddr, Config),
4244
J = [begin
4345
UUIDBin = proplists:get_value(uuid, G),
4446
L = [{name, proplists:get_value(name, G)},

src/menelaus_web_node.erl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828

2929
-export([handle_node/2,
3030
build_full_node_info/2,
31+
build_full_node_info/3,
3132
build_memory_quota_info/1,
32-
build_nodes_info_fun/4,
33-
build_nodes_info/4,
33+
build_nodes_info_fun/5,
34+
build_nodes_info/5,
3435
build_node_hostname/3,
3536
handle_bucket_node_list/2,
3637
handle_bucket_node_info/3,
@@ -92,7 +93,11 @@ location_prop_to_json({state, ok}) -> {state, ok};
9293
location_prop_to_json(KV) -> KV.
9394

9495
build_full_node_info(Node, LocalAddr) ->
95-
{struct, KV} = (build_nodes_info_fun(true, normal, unstable, LocalAddr))(Node, undefined),
96+
build_full_node_info(ns_config:get(), Node, LocalAddr).
97+
98+
build_full_node_info(Config, Node, LocalAddr) ->
99+
Fun = build_nodes_info_fun(true, normal, unstable, LocalAddr, Config),
100+
{struct, KV} = Fun(Node, undefined),
96101
NodeStatus = ns_doctor:get_node(Node),
97102
StorageConf = ns_storage_conf:storage_conf_from_node_status(Node, NodeStatus),
98103
R = {struct, storage_conf_to_json(StorageConf)},
@@ -104,7 +109,7 @@ build_full_node_info(Node, LocalAddr) ->
104109
|| {Path, SizeKBytes, UsagePercent} <- DiskData]}]}},
105110
{storageTotals, {struct, [{Type, {struct, PropList}}
106111
|| {Type, PropList} <- ns_storage_conf:nodes_storage_info([Node])]}},
107-
{storage, R}] ++ KV ++ build_memory_quota_info(ns_config:latest()),
112+
{storage, R}] ++ KV ++ build_memory_quota_info(Config),
108113
{struct, lists:filter(fun (X) -> X =/= undefined end,
109114
Fields)}.
110115

@@ -116,9 +121,10 @@ build_memory_quota_info(Config) ->
116121
{memory_quota:service_to_json_name(Service), Quota}
117122
end, memory_quota:aware_services(CompatVersion)).
118123

119-
build_nodes_info(CanIncludeOtpCookie, InfoLevel, Stability, LocalAddr) ->
120-
F = build_nodes_info_fun(CanIncludeOtpCookie, InfoLevel, Stability, LocalAddr),
121-
[F(N, undefined) || N <- ns_node_disco:nodes_wanted()].
124+
build_nodes_info(CanIncludeOtpCookie, InfoLevel, Stability, LocalAddr, Config) ->
125+
F = build_nodes_info_fun(CanIncludeOtpCookie, InfoLevel, Stability,
126+
LocalAddr, Config),
127+
[F(N, undefined) || N <- ns_node_disco:nodes_wanted(Config)].
122128

123129
%% builds health/warmup status of given node (w.r.t. given Bucket if
124130
%% not undefined)
@@ -153,10 +159,10 @@ build_node_status(Node, Bucket, InfoNode, BucketsAll) ->
153159
<<"unhealthy">>
154160
end.
155161

156-
build_nodes_info_fun(CanIncludeOtpCookie, InfoLevel, Stability, LocalAddr) ->
162+
build_nodes_info_fun(CanIncludeOtpCookie, InfoLevel, Stability, LocalAddr,
163+
Config) ->
157164
OtpCookie = list_to_binary(atom_to_list(erlang:get_cookie())),
158165
NodeStatuses = ns_doctor:get_nodes(),
159-
Config = ns_config:get(),
160166
BucketsAll = ns_bucket:get_buckets(Config),
161167
fun(WantENode, Bucket) ->
162168
InfoNode = ns_doctor:get_node(WantENode, NodeStatuses),

src/menelaus_web_pools.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ do_build_pool_info(Id, InfoLevel, Stability, LocalAddr) ->
191191
UUID = menelaus_web:get_uuid(),
192192

193193
CanIncludeOtpCookie = InfoLevel =:= admin orelse InfoLevel =:= internal,
194-
Nodes = menelaus_web_node:build_nodes_info(CanIncludeOtpCookie, InfoLevel,
195-
Stability, LocalAddr),
196194
Config = ns_config:get(),
195+
Nodes = menelaus_web_node:build_nodes_info(CanIncludeOtpCookie, InfoLevel,
196+
Stability, LocalAddr, Config),
197197

198198
TasksURI = bin_concat_path(["pools", Id, "tasks"],
199199
[{"v", ns_doctor:get_tasks_version()}]),
@@ -537,10 +537,10 @@ cluster_info_props(Req) ->
537537
end},
538538
{buckets, fun extract_bucket_specific_data/1},
539539
{nodes,
540-
fun () ->
540+
fun (Cfg) ->
541541
[begin
542542
{struct, Props} = menelaus_web_node:build_full_node_info(
543-
N, local_addr(Req)),
543+
Cfg, N, local_addr(Req)),
544544
glean_node_details(Props)
545545
end || N <- ns_node_disco:nodes_wanted()]
546546
end}].

0 commit comments

Comments
 (0)