Merge pull request #4163 from tigercl/fix/telemetry

fix(telemtry): report only in official version
This commit is contained in:
Zaiming Shi 2021-02-22 21:01:32 +01:00 committed by GitHub
commit 1b0b742919
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 1 deletions

View File

@ -157,7 +157,12 @@ init([Opts]) ->
[#telemetry{uuid = UUID, enabled = Enabled} | _] ->
State#state{enabled = Enabled, uuid = UUID}
end,
{ok, ensure_report_timer(NState), {continue, first_report}}.
case official_version(emqx_version()) of
true ->
{ok, ensure_report_timer(NState), {continue, first_report}};
false ->
{ok, NState#state{enabled = false}}
end.
handle_call(enable, _From, State = #state{uuid = UUID}) ->
mnesia:dirty_write(?TELEMETRY, #telemetry{id = ?UNIQUE_ID,
@ -217,6 +222,14 @@ code_change(_OldVsn, State, _Extra) ->
%% Internal functions
%%------------------------------------------------------------------------------
official_version(Version) ->
case re:run(Version,
"^\\d+\\.\\d+(?:(-(?:alpha|beta|rc)\\.[1-9][0-9]*)|\\.\\d+)$",
[{capture, none}]) of
match -> true;
nomatch -> false
end.
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
State#state{timer = emqx_misc:start_timer(ReportInterval, time_to_report_telemetry_data)}.

View File

@ -46,6 +46,20 @@ t_uuid(_) ->
{ok, UUID3} = emqx_telemetry:get_uuid(),
?assertEqual(UUID2, UUID3).
t_official_version(_) ->
true = emqx_telemetry:official_version("0.0.0"),
true = emqx_telemetry:official_version("1.1.1"),
true = emqx_telemetry:official_version("10.10.10"),
false = emqx_telemetry:official_version("0.0.0.0"),
false = emqx_telemetry:official_version("1.1.a"),
true = emqx_telemetry:official_version("0.0-alpha.1"),
true = emqx_telemetry:official_version("1.1-alpha.1"),
true = emqx_telemetry:official_version("10.10-alpha.10"),
false = emqx_telemetry:official_version("1.1-alpha.0"),
true = emqx_telemetry:official_version("1.1-beta.1"),
true = emqx_telemetry:official_version("1.1-rc.1"),
false = emqx_telemetry:official_version("1.1-alpha.a").
t_get_telemetry(_) ->
{ok, TelemetryData} = emqx_telemetry:get_telemetry(),
OTPVersion = bin(erlang:system_info(otp_release)),