fix: start connector-mqtt failed when username/password not provided

This commit is contained in:
Shawn 2022-08-31 09:18:10 +08:00
parent 73e19d84ee
commit ca52b8eb29
3 changed files with 40 additions and 29 deletions

View File

@ -224,20 +224,20 @@ make_forward_confs(undefined) ->
make_forward_confs(FrowardConf) ->
FrowardConf.
basic_config(#{
server := Server,
reconnect_interval := ReconnIntv,
proto_ver := ProtoVer,
bridge_mode := BridgeMode,
username := User,
password := Password,
clean_start := CleanStart,
keepalive := KeepAlive,
retry_interval := RetryIntv,
max_inflight := MaxInflight,
ssl := #{enable := EnableSsl} = Ssl
}) ->
basic_config(
#{
server := Server,
reconnect_interval := ReconnIntv,
proto_ver := ProtoVer,
bridge_mode := BridgeMode,
clean_start := CleanStart,
keepalive := KeepAlive,
retry_interval := RetryIntv,
max_inflight := MaxInflight,
ssl := #{enable := EnableSsl} = Ssl
} = Conf
) ->
BaiscConf = #{
%% connection opts
server => Server,
%% 30s
@ -251,8 +251,6 @@ basic_config(#{
%% non-standard mqtt connection packets will be filtered out by LB.
%% So let's disable bridge_mode.
bridge_mode => BridgeMode,
username => User,
password => Password,
clean_start => CleanStart,
keepalive => ms_to_s(KeepAlive),
retry_interval => RetryIntv,
@ -260,7 +258,20 @@ basic_config(#{
ssl => EnableSsl,
ssl_opts => maps:to_list(maps:remove(enable, Ssl)),
if_record_metrics => true
}.
},
maybe_put_fields([username, password], Conf, BaiscConf).
maybe_put_fields(Fields, Conf, Acc0) ->
lists:foldl(
fun(Key, Acc) ->
case maps:find(Key, Conf) of
error -> Acc;
{ok, Val} -> Acc#{Key => Val}
end
end,
Acc0,
Fields
).
ms_to_s(Ms) ->
erlang:ceil(Ms / 1000).

View File

@ -88,18 +88,18 @@
%% Logical operators
-define(is_logical(Op), (Op =:= 'and' orelse Op =:= 'or')).
-define(RAISE(_EXP_, _ERROR_),
?RAISE(_EXP_, _ = do_nothing, _ERROR_)
-define(RAISE(EXP, ERROR),
?RAISE(EXP, _ = do_nothing, ERROR)
).
-define(RAISE(_EXP_, _EXP_ON_FAIL_, _ERROR_),
-define(RAISE(EXP, EXP_ON_FAIL, ERROR),
fun() ->
try
(_EXP_)
(EXP)
catch
_EXCLASS_:_EXCPTION_:_ST_ ->
_EXP_ON_FAIL_,
throw(_ERROR_)
EXCLASS:EXCPTION:ST ->
EXP_ON_FAIL,
throw(ERROR)
end
end()
).

View File

@ -130,13 +130,13 @@ do_apply_rule(
) ->
{Selected, Collection} = ?RAISE(
select_and_collect(Fields, Columns),
{select_and_collect_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{select_and_collect_error, {EXCLASS, EXCPTION, ST}}
),
ColumnsAndSelected = maps:merge(Columns, Selected),
case
?RAISE(
match_conditions(Conditions, ColumnsAndSelected),
{match_conditions_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{match_conditions_error, {EXCLASS, EXCPTION, ST}}
)
of
true ->
@ -166,12 +166,12 @@ do_apply_rule(
) ->
Selected = ?RAISE(
select_and_transform(Fields, Columns),
{select_and_transform_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{select_and_transform_error, {EXCLASS, EXCPTION, ST}}
),
case
?RAISE(
match_conditions(Conditions, maps:merge(Columns, Selected)),
{match_conditions_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{match_conditions_error, {EXCLASS, EXCPTION, ST}}
)
of
true ->
@ -245,7 +245,7 @@ filter_collection(Columns, InCase, DoEach, {CollKey, CollVal}) ->
case
?RAISE(
match_conditions(InCase, ColumnsAndItem),
{match_incase_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{match_incase_error, {EXCLASS, EXCPTION, ST}}
)
of
true when DoEach == [] -> {true, ColumnsAndItem};
@ -253,7 +253,7 @@ filter_collection(Columns, InCase, DoEach, {CollKey, CollVal}) ->
{true,
?RAISE(
select_and_transform(DoEach, ColumnsAndItem),
{doeach_error, {_EXCLASS_, _EXCPTION_, _ST_}}
{doeach_error, {EXCLASS, EXCPTION, ST}}
)};
false ->
false