summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2018-02-23 00:30:24 +0300
committerGitHub <noreply@github.com>2018-02-23 00:30:24 +0300
commit4cb22988960d73524f3bc71da340e4a3b066f3a1 (patch)
tree5d70453cfd59ebe32d206c43a9b988d92c08eb0e /src
parent54d856115ce767e9a993e6520a85cb058b86bc02 (diff)
parent714078f358579eb2f639f31a4257866db84756f7 (diff)
downloadrabbitmq-server-git-4cb22988960d73524f3bc71da340e4a3b066f3a1.tar.gz
Merge pull request #1524 from rabbitmq/rabbitmq-server-1522-net-ticktime-in-new-config-format-master
Support kernel.net_ticktime in Cuttlefish configuration (master)
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_config.erl40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/rabbit_config.erl b/src/rabbit_config.erl
index a3f7d19136..7333a4157a 100644
--- a/src/rabbit_config.erl
+++ b/src/rabbit_config.erl
@@ -72,13 +72,10 @@ update_app_config(ConfigFile) ->
%% For application config to be updated, applications should
%% be unloaded first.
%% If an application is already running, print an error.
- lists:foreach(fun({App, _Config}) ->
+ lists:foreach(fun({App, AppConfig}) ->
case lists:member(App, RunningApps) of
true ->
- io:format(standard_error,
- "~nUnable to update config for app ~p from *.conf file."
- " App is already running. Use advanced.config instead.~n",
- [App]);
+ maybe_print_warning_for_running_app(App, AppConfig);
false ->
case lists:member(App, LoadedApps) of
true -> application:unload(App);
@@ -87,11 +84,44 @@ update_app_config(ConfigFile) ->
end
end,
Config),
+ maybe_set_net_ticktime(proplists:get_value(kernel, Config)),
ok = application_controller:change_application_data([], [ConfigFile]),
%% Make sure to load all the applications we're unloaded
lists:foreach(fun(App) -> application:load(App) end, LoadedApps),
ok.
+maybe_print_warning_for_running_app(kernel, Config) ->
+ ConfigWithoutSupportedEntry = proplists:delete(net_ticktime, Config),
+ case length(ConfigWithoutSupportedEntry) > 0 of
+ true -> io:format(standard_error,
+ "~nUnable to update config for app ~p from *.conf file."
+ " App is already running. Use advanced.config instead.~n", [kernel]);
+ false -> ok
+ end;
+maybe_print_warning_for_running_app(App, _Config) ->
+ io:format(standard_error,
+ "~nUnable to update config for app ~p from *.conf file."
+ " App is already running. Use advanced.config instead.~n",
+ [App]).
+
+maybe_set_net_ticktime(undefined) ->
+ ok;
+maybe_set_net_ticktime(KernelConfig) ->
+ case proplists:get_value(net_ticktime, KernelConfig) of
+ undefined ->
+ ok;
+ NetTickTime ->
+ case net_kernel:set_net_ticktime(NetTickTime) of
+ {ongoing_change_to, NewNetTicktime} ->
+ io:format(standard_error,
+ "~nCouldn't set net_ticktime to ~p "
+ "as net_kernel is busy changing net_ticktime to ~p seconds ~n",
+ [NetTickTime, NewNetTicktime]);
+ _ ->
+ ok
+ end
+ end.
+
generate_config_file(ConfFiles, ConfDir, ScriptDir) ->
generate_config_file(ConfFiles, ConfDir, ScriptDir,
schema_dir(), get_advanced_config()).