fix: influxdb connector bad encode message

This commit is contained in:
DDDHuang 2022-08-01 10:03:16 +08:00
parent 55b9684541
commit c1542e7a77
1 changed files with 10 additions and 8 deletions

View File

@ -363,11 +363,13 @@ data_to_point(
TransOptions = #{return => rawlist, var_trans => fun data_filter/1}, TransOptions = #{return => rawlist, var_trans => fun data_filter/1},
case emqx_plugin_libs_rule:proc_tmpl(Timestamp, Data, TransOptions) of case emqx_plugin_libs_rule:proc_tmpl(Timestamp, Data, TransOptions) of
[TimestampInt] when is_integer(TimestampInt) -> [TimestampInt] when is_integer(TimestampInt) ->
{_, EncodeTags} = maps:fold(fun maps_config_to_data/3, {Data, #{}}, Tags),
{_, EncodeFields} = maps:fold(fun maps_config_to_data/3, {Data, #{}}, Fields),
Point = #{ Point = #{
measurement => emqx_plugin_libs_rule:proc_tmpl(Measurement, Data), measurement => emqx_plugin_libs_rule:proc_tmpl(Measurement, Data),
timestamp => TimestampInt, timestamp => TimestampInt,
tags => maps:fold(fun maps_config_to_data/3, {Data, #{}}, Tags), tags => EncodeTags,
fields => maps:fold(fun maps_config_to_data/3, {Data, #{}}, Fields) fields => EncodeFields
}, },
{ok, Point}; {ok, Point};
BadTimestamp -> BadTimestamp ->
@ -380,11 +382,11 @@ maps_config_to_data(K, {IntType, V}, {Data, Res}) when IntType == int orelse Int
NV = emqx_plugin_libs_rule:proc_tmpl(V, Data, TransOptions), NV = emqx_plugin_libs_rule:proc_tmpl(V, Data, TransOptions),
case {NK, NV} of case {NK, NV} of
{[undefined], _} -> {[undefined], _} ->
Res; {Data, Res};
{_, [undefined]} -> {_, [undefined]} ->
Res; {Data, Res};
{_, [IntV]} when is_integer(IntV) -> {_, [IntV]} when is_integer(IntV) ->
Res#{NK => {IntType, IntV}} {Data, Res#{NK => {IntType, IntV}}}
end; end;
maps_config_to_data(K, V, {Data, Res}) -> maps_config_to_data(K, V, {Data, Res}) ->
TransOptions = #{return => rawlist, var_trans => fun data_filter/1}, TransOptions = #{return => rawlist, var_trans => fun data_filter/1},
@ -392,11 +394,11 @@ maps_config_to_data(K, V, {Data, Res}) ->
NV = emqx_plugin_libs_rule:proc_tmpl(V, Data, TransOptions), NV = emqx_plugin_libs_rule:proc_tmpl(V, Data, TransOptions),
case {NK, NV} of case {NK, NV} of
{[undefined], _} -> {[undefined], _} ->
Res; {Data, Res};
{_, [undefined]} -> {_, [undefined]} ->
Res; {Data, Res};
_ -> _ ->
Res#{bin(NK) => NV} {Data, Res#{bin(NK) => NV}}
end. end.
data_filter(undefined) -> undefined; data_filter(undefined) -> undefined;