From a9673d7d2d4f27e997389fc02e7d1810483d981d Mon Sep 17 00:00:00 2001 From: k32 <10274441+k32@users.noreply.github.com> Date: Mon, 10 Jan 2022 18:38:37 +0100 Subject: [PATCH] fix(emqx_telemetry): Decorate RPC calls --- apps/emqx_modules/src/emqx_telemetry.erl | 2 +- .../src/proto/emqx_modules_proto_v1.erl | 33 +++++++++++++++++++ .../test/emqx_telemetry_SUITE.erl | 5 ++- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl diff --git a/apps/emqx_modules/src/emqx_telemetry.erl b/apps/emqx_modules/src/emqx_telemetry.erl index a78c64eb3..3aa7829e7 100644 --- a/apps/emqx_modules/src/emqx_telemetry.erl +++ b/apps/emqx_modules/src/emqx_telemetry.erl @@ -256,7 +256,7 @@ uptime() -> nodes_uuid() -> Nodes = lists:delete(node(), mria_mnesia:running_nodes()), lists:foldl(fun(Node, Acc) -> - case rpc:call(Node, ?MODULE, get_uuid, []) of + case emqx_modules_proto_v1:get_uuid(Node) of {badrpc, _Reason} -> Acc; {ok, UUID} -> diff --git a/apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl b/apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl new file mode 100644 index 000000000..b9cfaa7f5 --- /dev/null +++ b/apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl @@ -0,0 +1,33 @@ +%%-------------------------------------------------------------------- +%%Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_modules_proto_v1). + +-behaviour(emqx_bpapi). + +-export([ introduced_in/0 + + , get_uuid/1 + ]). + +-include_lib("emqx/include/bpapi.hrl"). + +introduced_in() -> + "5.0.0". + +-spec get_uuid(node()) -> {ok, binary()} | emqx_rpc:badrpc(). +get_uuid(Node) -> + rpc:call(Node, emqx_telemetry, get_uuid, []). diff --git a/apps/emqx_modules/test/emqx_telemetry_SUITE.erl b/apps/emqx_modules/test/emqx_telemetry_SUITE.erl index 9df659c77..a32895fc1 100644 --- a/apps/emqx_modules/test/emqx_telemetry_SUITE.erl +++ b/apps/emqx_modules/test/emqx_telemetry_SUITE.erl @@ -44,7 +44,10 @@ t_uuid(_) -> emqx_telemetry:disable(), emqx_telemetry:enable(), {ok, UUID3} = emqx_telemetry:get_uuid(), - ?assertEqual(UUID2, UUID3). + {ok, UUID4} = emqx_modules_proto_v1:get_uuid(node()), + ?assertEqual(UUID2, UUID3), + ?assertEqual(UUID3, UUID4), + ?assertMatch({badrpc, nodedown}, emqx_modules_proto_v1:get_uuid('fake@node')). t_official_version(_) -> true = emqx_telemetry:official_version("0.0.0"),