Prechádzať zdrojové kódy

refactor(telemetry): Export transactions

ieQu1 3 rokov pred
rodič
commit
d906715e0a
1 zmenil súbory, kde vykonal 51 pridanie a 44 odobranie
  1. 51 44
      apps/emqx_modules/src/emqx_telemetry.erl

+ 51 - 44
apps/emqx_modules/src/emqx_telemetry.erl

@@ -54,6 +54,11 @@
 
 
 -export([official_version/1]).
 -export([official_version/1]).
 
 
+%% Internal exports (RPC)
+-export([
+    do_ensure_uuids/0
+]).
+
 %% internal export
 %% internal export
 -export([read_raw_build_info/0]).
 -export([read_raw_build_info/0]).
 
 
@@ -530,54 +535,56 @@ bin(B) when is_binary(B) ->
     B.
     B.
 
 
 ensure_uuids() ->
 ensure_uuids() ->
-    Txn = fun() ->
-        NodeUUID =
-            case mnesia:wread({?TELEMETRY, node()}) of
-                [] ->
-                    NodeUUID0 =
-                        case get_uuid_from_file(node) of
-                            {ok, NUUID} -> NUUID;
-                            undefined -> generate_uuid()
-                        end,
-                    mnesia:write(
-                        ?TELEMETRY,
-                        #telemetry{
-                            id = node(),
-                            uuid = NodeUUID0
-                        },
-                        write
-                    ),
-                    NodeUUID0;
-                [#telemetry{uuid = NodeUUID0}] ->
-                    NodeUUID0
-            end,
-        ClusterUUID =
-            case mnesia:wread({?TELEMETRY, ?CLUSTER_UUID_KEY}) of
-                [] ->
-                    ClusterUUID0 =
-                        case get_uuid_from_file(cluster) of
-                            {ok, CUUID} -> CUUID;
-                            undefined -> generate_uuid()
-                        end,
-                    mnesia:write(
-                        ?TELEMETRY,
-                        #telemetry{
-                            id = ?CLUSTER_UUID_KEY,
-                            uuid = ClusterUUID0
-                        },
-                        write
-                    ),
-                    ClusterUUID0;
-                [#telemetry{uuid = ClusterUUID0}] ->
-                    ClusterUUID0
-            end,
-        {NodeUUID, ClusterUUID}
-    end,
-    {atomic, {NodeUUID, ClusterUUID}} = mria:transaction(?TELEMETRY_SHARD, Txn),
+    {atomic, {NodeUUID, ClusterUUID}} = mria:transaction(
+        ?TELEMETRY_SHARD, fun ?MODULE:do_ensure_uuids/0
+    ),
     save_uuid_to_file(NodeUUID, node),
     save_uuid_to_file(NodeUUID, node),
     save_uuid_to_file(ClusterUUID, cluster),
     save_uuid_to_file(ClusterUUID, cluster),
     {NodeUUID, ClusterUUID}.
     {NodeUUID, ClusterUUID}.
 
 
+do_ensure_uuids() ->
+    NodeUUID =
+        case mnesia:wread({?TELEMETRY, node()}) of
+            [] ->
+                NodeUUID0 =
+                    case get_uuid_from_file(node) of
+                        {ok, NUUID} -> NUUID;
+                        undefined -> generate_uuid()
+                    end,
+                mnesia:write(
+                    ?TELEMETRY,
+                    #telemetry{
+                        id = node(),
+                        uuid = NodeUUID0
+                    },
+                    write
+                ),
+                NodeUUID0;
+            [#telemetry{uuid = NodeUUID0}] ->
+                NodeUUID0
+        end,
+    ClusterUUID =
+        case mnesia:wread({?TELEMETRY, ?CLUSTER_UUID_KEY}) of
+            [] ->
+                ClusterUUID0 =
+                    case get_uuid_from_file(cluster) of
+                        {ok, CUUID} -> CUUID;
+                        undefined -> generate_uuid()
+                    end,
+                mnesia:write(
+                    ?TELEMETRY,
+                    #telemetry{
+                        id = ?CLUSTER_UUID_KEY,
+                        uuid = ClusterUUID0
+                    },
+                    write
+                ),
+                ClusterUUID0;
+            [#telemetry{uuid = ClusterUUID0}] ->
+                ClusterUUID0
+        end,
+    {NodeUUID, ClusterUUID}.
+
 get_uuid_from_file(Type) ->
 get_uuid_from_file(Type) ->
     Path = uuid_file_path(Type),
     Path = uuid_file_path(Type),
     case file:read_file(Path) of
     case file:read_file(Path) of