Merge pull request #10062 from terry-xiaoyu/emqx-telementry-timeout

fix: change timeout of gen_server:calls for emqx_telemetry to infinity
This commit is contained in:
Xinyu Liu 2023-03-03 14:37:00 +08:00 committed by GitHub
commit 9eb908f572
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 15 deletions

View File

@ -1,6 +1,6 @@
{application, emqx_telemetry, {application, emqx_telemetry,
[{description, "EMQ X Telemetry"}, [{description, "EMQ X Telemetry"},
{vsn, "4.3.4"}, % strict semver, bump manually! {vsn, "4.3.5"}, % strict semver, bump manually!
{modules, []}, {modules, []},
{registered, [emqx_telemetry_sup]}, {registered, [emqx_telemetry_sup]},
{applications, [kernel,stdlib]}, {applications, [kernel,stdlib]},

View File

@ -1,11 +1,9 @@
%% -*- mode: erlang -*- %% -*- mode: erlang -*-
%% Unless you know what you are doing, DO NOT edit manually!! %% Unless you know what you are doing, DO NOT edit manually!!
{VSN, {VSN,
[{"4.3.3",[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, [{<<"4\\.3\\.[0-4]">>,
{<<"4\\.3\\.[0-2]">>,
[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, [{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]},
{<<".*">>,[]}], {<<".*">>,[]}],
[{"4.3.3",[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, [{<<"4\\.3\\.[0-4]">>,
{<<"4\\.3\\.[0-2]">>,
[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, [{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]},
{<<".*">>,[]}]}. {<<".*">>,[]}]}.

View File

@ -75,7 +75,7 @@
enabled :: undefined | boolean(), enabled :: undefined | boolean(),
url :: string(), url :: undefined | string(),
report_interval :: undefined | non_neg_integer(), report_interval :: undefined | non_neg_integer(),
@ -90,6 +90,8 @@
-define(TELEMETRY, emqx_telemetry). -define(TELEMETRY, emqx_telemetry).
-define(HTTP_TIMEOUT, 10).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Mnesia bootstrap %% Mnesia bootstrap
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -115,19 +117,19 @@ stop() ->
gen_server:stop(?MODULE). gen_server:stop(?MODULE).
enable() -> enable() ->
gen_server:call(?MODULE, enable). gen_server:call(?MODULE, enable, infinity).
disable() -> disable() ->
gen_server:call(?MODULE, disable). gen_server:call(?MODULE, disable, infinity).
is_enabled() -> is_enabled() ->
gen_server:call(?MODULE, is_enabled). gen_server:call(?MODULE, is_enabled, infinity).
get_uuid() -> get_uuid() ->
gen_server:call(?MODULE, get_uuid). gen_server:call(?MODULE, get_uuid, infinity).
get_telemetry() -> get_telemetry() ->
gen_server:call(?MODULE, get_telemetry). gen_server:call(?MODULE, get_telemetry, infinity).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% gen_server callbacks %% gen_server callbacks
@ -353,15 +355,18 @@ report_telemetry(State = #state{url = URL}) ->
Data = get_telemetry(State), Data = get_telemetry(State),
case emqx_json:safe_encode(Data) of case emqx_json:safe_encode(Data) of
{ok, Bin} -> {ok, Bin} ->
httpc_request(post, URL, [], Bin), _ = httpc_request(post, URL, [], Bin),
?tp(debug, telemetry_data_reported, #{}); ?tp(debug, telemetry_data_reported, #{});
{error, Reason} -> {error, Reason} ->
%% debug? why? %% debug? why?
?tp(debug, telemetry_data_encode_error, #{data => Data, reason => Reason}) ?tp(debug, telemetry_data_encode_error, #{data => Data, reason => Reason})
end. end.
%% we might set url = undefined in testcase
httpc_request(_, undefined, _, _) ->
ignore;
httpc_request(Method, URL, Headers, Body) -> httpc_request(Method, URL, Headers, Body) ->
HTTPOptions = [{timeout, timer:seconds(10)}, {ssl, [{verify, verify_none}]}], HTTPOptions = [{timeout, timer:seconds(?HTTP_TIMEOUT)}, {ssl, [{verify, verify_none}]}],
Options = [], Options = [],
httpc:request(Method, {URL, Headers, "application/json", Body}, HTTPOptions, Options). httpc:request(Method, {URL, Headers, "application/json", Body}, HTTPOptions, Options).

View File

@ -42,7 +42,7 @@ t_uuid(_) ->
{ok, UUID2} = emqx_telemetry:get_uuid(), {ok, UUID2} = emqx_telemetry:get_uuid(),
emqx_telemetry:stop(), emqx_telemetry:stop(),
emqx_telemetry:start_link([{enabled, true}, emqx_telemetry:start_link([{enabled, true},
{url, "https://telemetry.emqx.io/api/telemetry"}, {url, undefined},
{report_interval, 7 * 24 * 60 * 60}]), {report_interval, 7 * 24 * 60 * 60}]),
{ok, UUID3} = emqx_telemetry:get_uuid(), {ok, UUID3} = emqx_telemetry:get_uuid(),
?assertEqual(UUID2, UUID3). ?assertEqual(UUID2, UUID3).
@ -80,7 +80,7 @@ t_send_after_enable(_) ->
ok = snabbkaffe:start_trace(), ok = snabbkaffe:start_trace(),
try try
ok = emqx_telemetry:enable(), ok = emqx_telemetry:enable(),
?assertMatch({ok, _}, ?block_until(#{?snk_kind := telemetry_data_reported}, 2000, 100)) ?assertMatch({ok, _}, ?block_until(#{?snk_kind := telemetry_data_reported}, 15000, 100))
after after
ok = snabbkaffe:stop() ok = snabbkaffe:stop()
end. end.