Просмотр исходного кода

fix(bridge): get bridges from all nodes crash

Shawn 4 лет назад
Родитель
Сommit
7dcb9567e7
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      apps/emqx_bridge/src/emqx_bridge_api.erl

+ 7 - 2
apps/emqx_bridge/src/emqx_bridge_api.erl

@@ -18,6 +18,7 @@
 -behaviour(minirest_api).
 
 -include_lib("typerefl/include/types.hrl").
+-include_lib("emqx/include/logger.hrl").
 
 -import(hoconsc, [mk/2, array/1, enum/1]).
 
@@ -371,8 +372,12 @@ zip_bridges([BridgesFirstNode | _] = BridgesAllNodes) ->
 
 pick_bridges_by_id(Id, BridgesAllNodes) ->
     lists:foldl(fun(BridgesOneNode, Acc) ->
-            [BridgeInfo] = [Bridge || Bridge = #{id := Id0} <- BridgesOneNode, Id0 == Id],
-            [BridgeInfo | Acc]
+            case [Bridge || Bridge = #{id := Id0} <- BridgesOneNode, Id0 == Id] of
+                [BridgeInfo] -> [BridgeInfo | Acc];
+                [] ->
+                    ?SLOG(warning, #{msg => "bridge_inconsistent_in_cluster", bridge => Id}),
+                    Acc
+            end
         end, [], BridgesAllNodes).
 
 format_bridge_info([FirstBridge | _] = Bridges) ->