Преглед изворни кода

fix(emqx_rewrite): fix config update not work in cluster

firest пре 4 година
родитељ
комит
df2da949f1
1 измењених фајлова са 9 додато и 2 уклоњено
  1. 9 2
      apps/emqx_modules/src/emqx_rewrite.erl

+ 9 - 2
apps/emqx_modules/src/emqx_rewrite.erl

@@ -37,17 +37,21 @@
         ]).
 
 -export([ list/0
-        , update/1]).
+        , update/1
+        , post_config_update/5
+        ]).
 
 %%--------------------------------------------------------------------
 %% Load/Unload
 %%--------------------------------------------------------------------
 
 enable() ->
+    emqx_conf:add_handler([rewrite], ?MODULE),
     Rules = emqx_conf:get([rewrite], []),
     register_hook(Rules).
 
 disable() ->
+    emqx_conf:remove_handler([rewrite]),
     emqx_hooks:del('client.subscribe', {?MODULE, rewrite_subscribe}),
     emqx_hooks:del('client.unsubscribe', {?MODULE, rewrite_unsubscribe}),
     emqx_hooks:del('message.publish', {?MODULE, rewrite_publish}),
@@ -57,7 +61,10 @@ list() ->
     emqx_conf:get_raw([<<"rewrite">>], []).
 
 update(Rules0) ->
-    {ok, #{config := Rules}} = emqx_conf:update([rewrite], Rules0, #{override_to => cluster}),
+    {ok, _} = emqx_conf:update([rewrite], Rules0, #{override_to => cluster}),
+    ok.
+
+post_config_update(_KeyPath, _Config, Rules, _OldConf, _AppEnvs) ->
     register_hook(Rules).
 
 register_hook([]) -> disable();