From e54433d34251e89b5404020dd79b9cdbe9377ca6 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Mon, 26 Apr 2021 19:58:03 +0200 Subject: [PATCH] feat(emqx_vm): add api to inspect which otp version running on --- src/emqx_vm.erl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/emqx_vm.erl b/src/emqx_vm.erl index 1ec071797..07d16b059 100644 --- a/src/emqx_vm.erl +++ b/src/emqx_vm.erl @@ -40,6 +40,7 @@ -export([ get_ets_list/0 , get_ets_info/0 , get_ets_info/1 + , get_otp_version/0 ]). -export([cpu_util/0]). @@ -367,3 +368,21 @@ compat_windows(Fun) -> end end. +%% @doc Return on which Eralng/OTP the current vm is running. +get_otp_version() -> + string:trim(binary_to_list(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} -> + %% running on EQM X release + Vsn; + {error, enoent} -> + %% running tests etc. + OtpMajor = erlang:system_info(otp_release), + OtpVsnFile = file:read_file(filename:join([ReleasesDir, OtpMajor, "OTP_VERSION"])), + {ok, Vsn} = file:read_file(OtpVsnFile), + Vsn + end.