Skip to content

Commit b662a1d

Browse files
committed
MB-62509: Add query completed-stream-size ...
... settings to the query_settings_manager. Also refactors common upgrade code to reduce duplication. Change-Id: Iafc796c0c434537e219646e3d038311ee5be3dc9 Reviewed-on: https://review.couchbase.org/c/ns_server/+/221041 Tested-by: Bryan McCoid <[email protected]> Well-Formed: Build Bot <[email protected]> Reviewed-by: Steve Watanabe <[email protected]>
1 parent 0620565 commit b662a1d

File tree

6 files changed

+65
-31
lines changed

6 files changed

+65
-31
lines changed

apps/ns_server/src/analytics_settings_manager.erl

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
config_upgrade_to_76/1]).
3131

3232
-import(json_settings_manager,
33-
[id_lens/1]).
33+
[id_lens/1,
34+
config_upgrade_settings/5]).
3435

3536
-define(ANALYTICS_CONFIG_KEY, {metakv, <<"/analytics/settings/config">>}).
3637

@@ -121,15 +122,11 @@ general_settings_lens_props(ClusterVersion) ->
121122
[]
122123
end.
123124

124-
config_upgrade_settings(Config, OldVersion, NewVersion) ->
125-
NewSettings = general_settings_defaults(NewVersion) --
126-
general_settings_defaults(OldVersion),
127-
json_settings_manager:upgrade_existing_key(
128-
?MODULE, Config, [{generalSettings, NewSettings}],
129-
known_settings(NewVersion)).
130-
131125
config_upgrade_to_76(Config) ->
132-
config_upgrade_settings(Config, ?VERSION_72, ?VERSION_76).
126+
config_upgrade_settings(?MODULE, Config,
127+
general_settings_defaults(?VERSION_72),
128+
general_settings_defaults(?VERSION_76),
129+
known_settings(?VERSION_76)).
133130

134131
-ifdef(TEST).
135132
defaults_test() ->

apps/ns_server/src/json_settings_manager.erl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
fetch_settings_json/2,
1919
decode_settings_json/1,
2020
id_lens/1,
21+
config_upgrade_settings/5,
2122
allow_missing_lens/1,
2223
props_lens/1,
2324
update/2,
@@ -213,3 +214,7 @@ props_lens(Props) ->
213214
lens_set_many(Props, Values, Map)
214215
end,
215216
{Get, Set}.
217+
218+
config_upgrade_settings(M, Config, DefaultsOld, DefaultsNew, Known) ->
219+
NewSettings = DefaultsNew -- DefaultsOld,
220+
upgrade_existing_key(M, Config, [{generalSettings, NewSettings}], Known).

apps/ns_server/src/menelaus_web_queries.erl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,14 @@ settings_post_validators() ->
6767
false ->
6868
[]
6969
end ++
70+
case cluster_compat_mode:is_cluster_morpheus() of
71+
true ->
72+
[validator:integer(queryCompletedStreamSize, _),
73+
validator:range(queryCompletedStreamSize, 0,
74+
?MAX_64BIT_UNSIGNED_INT, _)];
75+
false ->
76+
[]
77+
end ++
7078
[validator:unsupported(_)].
7179

7280
validate_tmp_space_size(Name, State) ->

apps/ns_server/src/ns_online_config_upgrader.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,5 @@ upgrade(?VERSION_76, Config) ->
9494
{?VERSION_MORPHEUS,
9595
menelaus_web_alerts_srv:config_upgrade_to_morpheus(Config) ++
9696
menelaus_web_auto_failover:config_upgrade_to_morpheus(Config) ++
97-
menelaus_web_guardrails:config_upgrade_to_morpheus(Config)}.
97+
menelaus_web_guardrails:config_upgrade_to_morpheus(Config) ++
98+
query_settings_manager:config_upgrade_to_morpheus(Config)}.

apps/ns_server/src/query_settings_manager.erl

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,17 @@
2424
update/2,
2525
update_txn/1,
2626
config_default/0,
27-
config_upgrade_to_76/1]).
27+
config_upgrade_to_76/1,
28+
config_upgrade_to_morpheus/1]).
2829

2930
-export([cfg_key/0,
3031
is_enabled/0,
3132
known_settings/0,
3233
on_update/2]).
3334

3435
-import(json_settings_manager,
35-
[id_lens/1]).
36+
[id_lens/1,
37+
config_upgrade_settings/5]).
3638

3739
-define(QUERY_CONFIG_KEY, {metakv, <<"/query/settings/config">>}).
3840

@@ -77,12 +79,18 @@ config_default() ->
7779
maps:new(),
7880
known_settings(?MIN_SUPPORTED_VERSION))}.
7981

82+
83+
config_upgrade_to_morpheus(Config) ->
84+
config_upgrade_settings(?MODULE, Config,
85+
general_settings_defaults(?VERSION_76),
86+
general_settings_defaults(?VERSION_MORPHEUS),
87+
known_settings(?VERSION_MORPHEUS)).
88+
8089
config_upgrade_to_76(Config) ->
81-
NewSettings = general_settings_defaults(?VERSION_76) --
82-
general_settings_defaults(?MIN_SUPPORTED_VERSION),
83-
json_settings_manager:upgrade_existing_key(
84-
?MODULE, Config, [{generalSettings, NewSettings}],
85-
known_settings(?VERSION_76), fun functools:id/1).
90+
config_upgrade_settings(?MODULE, Config,
91+
general_settings_defaults(?VERSION_72),
92+
general_settings_defaults(?VERSION_76),
93+
known_settings(?VERSION_76)).
8694

8795
known_settings() ->
8896
known_settings(cluster_compat_mode:get_ns_config_compat_version()).
@@ -147,19 +155,27 @@ general_settings(Ver) ->
147155
{queryCleanupClientAttempts, "cleanupclientattempts", true},
148156
{queryCleanupLostAttempts, "cleanuplostattempts", true},
149157
{queryCleanupWindow, "cleanupwindow", <<"60s">>},
150-
{queryNumAtrs, "numatrs", 1024}] ++
151-
case cluster_compat_mode:is_version_76(Ver) of
152-
true ->
153-
[{queryNodeQuota, "node-quota", ?QUERY_NODE_QUOTA_DEFAULT},
154-
{queryUseReplica, "use-replica", <<"unset">>},
155-
{queryNodeQuotaValPercent,
156-
"node-quota-val-percent", 67},
157-
{queryNumCpus, "num-cpus", 0},
158-
{queryCompletedMaxPlanSize,
159-
"completed-max-plan-size", 262144}];
160-
false ->
161-
[]
162-
end ++ n1ql_feature_ctrl_setting(Ver).
158+
{queryNumAtrs, "numatrs", 1024}]
159+
++ case cluster_compat_mode:is_version_76(Ver) of
160+
true ->
161+
[{queryNodeQuota, "node-quota", ?QUERY_NODE_QUOTA_DEFAULT},
162+
{queryUseReplica, "use-replica", <<"unset">>},
163+
{queryNodeQuotaValPercent,
164+
"node-quota-val-percent", 67},
165+
{queryNumCpus, "num-cpus", 0},
166+
{queryCompletedMaxPlanSize,
167+
"completed-max-plan-size", 262144}];
168+
false ->
169+
[]
170+
end
171+
++ case cluster_compat_mode:is_version_morpheus(Ver) of
172+
true ->
173+
[{queryCompletedStreamSize,
174+
"completed-stream-size", 0}];
175+
false ->
176+
[]
177+
end
178+
++ n1ql_feature_ctrl_setting(Ver).
163179

164180
curl_whitelist_settings_len_props() ->
165181
[{queryCurlWhitelist, id_lens(<<"query.settings.curl_whitelist">>)}].
@@ -211,7 +227,13 @@ config_upgrade_test() ->
211227
"\"use-replica\":\"unset\"}">>,
212228
Data1),
213229

214-
meck:unload(config_profile).
230+
meck:unload(config_profile),
231+
232+
CmdList2 = config_upgrade_to_morpheus([]),
233+
[{set, {metakv, Meta2}, Data2}] = CmdList2,
234+
?assertEqual(<<"/query/settings/config">>, Meta2),
235+
?assertEqual(<<"{\"completed-stream-size\":0}">>,
236+
Data2).
215237

216238
create_test_config_n1ql_quotas(NodeQuotaValue) when is_number(NodeQuotaValue) ->
217239
WOutNodeQuota = proplists:delete(queryNodeQuota,

cluster_tests/testsets/settings_managers_tests.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def shard_affinty_blob(true_false):
8686
"queryNodeQuotaValPercent": create_inner(67),
8787
"queryNumCpus": create_inner(0),
8888
"queryCompletedMaxPlanSize": create_inner(262144),
89+
"queryCompletedStreamSize": create_inner(0),
8990
"queryCurlWhitelist": create_inner({"all_access": False, "allowed_urls": [],
9091
"disallowed_urls": []})
9192
}

0 commit comments

Comments
 (0)