From 171933301a1f2d8e355074231f9330cceeeb43f1 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Fri, 30 Apr 2021 11:45:36 +0200 Subject: [PATCH] fix(dashboard): display full Erlang/OTP version --- apps/emqx_management/src/emqx_mgmt.erl | 2 +- src/emqx_vm.erl | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 0f42027b4..8c196f682 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -553,7 +553,7 @@ rpc_call(Node, Fun, Args) -> end. otp_rel() -> - lists:concat(["R", erlang:system_info(otp_release), "/", erlang:system_info(version)]). + lists:concat([emqx_vm:get_otp_version(), "/", erlang:system_info(version)]). check_row_limit(Tables) -> check_row_limit(Tables, max_row_limit()). diff --git a/src/emqx_vm.erl b/src/emqx_vm.erl index 511028c1d..537330b01 100644 --- a/src/emqx_vm.erl +++ b/src/emqx_vm.erl @@ -369,16 +369,17 @@ compat_windows(Fun) -> end. %% @doc Return on which Eralng/OTP the current vm is running. +%% NOTE: This API reads a file, do not use it in critical code paths. get_otp_version() -> - string:trim(binary_to_list(read_otp_version())). + parse_built_on(read_otp_version()). read_otp_version() -> ReleasesDir = filename:join([code:root_dir(), "releases"]), Filename = filename:join([ReleasesDir, emqx_app:get_release(), "BUILT_ON"]), case file:read_file(Filename) of - {ok, Vsn} -> + {ok, BuiltOn} -> %% running on EQM X release - Vsn; + BuiltOn; {error, enoent} -> %% running tests etc. OtpMajor = erlang:system_info(otp_release), @@ -386,3 +387,11 @@ read_otp_version() -> {ok, Vsn} = file:read_file(OtpVsnFile), Vsn end. + +parse_built_on(BuiltOn) -> + case binary:split(BuiltOn, <<"-">>, [global]) of + [Vsn, <<"emqx">>, N | _] -> + binary_to_list(Vsn) ++ "-emqx-" ++ binary_to_list(N); + [Vsn | _] -> + string:trim(binary_to_list(Vsn)) + end.