![]() Related Issue: https://emqx.atlassian.net/browse/EMQX-8461 Currently, the InfluxDB client raises an error if an empty `fields` map is passed to it for pushing data. ``` 14:03:35.563 [error] [InfluxDB] Encode [ %{ fields: %{}, measurement: "t/topic", tags: %{}, timestamp: 1670864615563 } ] failed: :error :missing_field [ {:influxdb_line, :encode_fields, 1, [ file: '/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl', line: 60 ]}, {:influxdb_line, :encode_, 1, [ file: '/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl', line: 44 ]}, {:influxdb_line, :"-encode_/1-fun-0-", 2, [ file: '/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl', line: 38 ]}, {:influxdb, :write, 2, [file: '/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb.erl', line: 79]}, {:emqx_ee_connector_influxdb, :do_query, 3, [ file: '/home/thales/dev/emqx/emqx/lib-ee/emqx_ee_connector/src/emqx_ee_connector_influxdb.erl', line: 322 ]}, {:emqx_resource_worker, :apply_query_fun, 6, [ file: '/home/thales/dev/emqx/emqx/apps/emqx_resource/src/emqx_resource_worker.erl', line: 454 ]}, {:emqx_resource_worker, :query_or_acc, 3, [ file: '/home/thales/dev/emqx/emqx/apps/emqx_resource/src/emqx_resource_worker.erl', line: 306 ]}, {:gen_statem, :loop_state_callback, 11, [file: 'gen_statem.erl', line: 1203]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 226]} ] 2022-12-12T14:03:35.563607-03:00 [error] [InfluxDB] Encode [#{fields => #{},measurement => <<"t/topic">>,tags => #{},timestamp => 1670864615563}] failed: error missing_field [{influxdb_line,encode_fields,1,[{file,"/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl"},{line,60}]},{influxdb_line,encode_,1,[{file,"/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl"},{line,44}]},{influxdb_line,'-encode_/1-fun-0-',2,[{file,"/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb_line.erl"},{line,38}]},{influxdb,write,2,[{file,"/home/thales/dev/emqx/emqx/deps/influxdb/src/influxdb.erl"},{line,79}]},{emqx_ee_connector_influxdb,do_query,3,[{file,"/home/thales/dev/emqx/emqx/lib-ee/emqx_ee_connector/src/emqx_ee_connector_influxdb.erl"},{line,322}]},{emqx_resource_worker,apply_query_fun,6,[{file,"/home/thales/dev/emqx/emqx/apps/emqx_resource/src/emqx_resource_worker.erl"},{line,454}]},{emqx_resource_worker,query_or_acc,3,[{file,"/home/thales/dev/emqx/emqx/apps/emqx_resource/src/emqx_resource_worker.erl"},{line,306}]},{gen_statem,loop_state_callback,11,[{file,"gen_statem.erl"},{line,1203}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}] 14:03:35.565 [error] [connector: "bridge:influxdb_api_v2:aaa", msg: 'influxdb write point failed', reason: :missing_field] 2022-12-12T14:03:35.565345-03:00 [error] connector: <<"bridge:influxdb_api_v2:aaa">>, line: 335, mfa: emqx_ee_connector_influxdb:do_query/3, msg: influxdb write point failed, reason: missing_field [] 14:03:35.565 [error] [id: "bridge:influxdb_api_v2:aaa", msg: :send_error, reason: :missing_field] iex(emqx@127.0.0.1)2> 2022-12-12T14:03:35.565913-03:00 [error] id: <<"bridge:influxdb_api_v2:aaa">>, line: 396, mfa: emqx_resource_worker:handle_query_result/4, msg: send_error, reason: missing_field ``` Instead of raising, we check if the interpolation resulted in an empty map due to lack of context and just fail the push more gracefully. Related to this, the original issue _appears_ to be related to a frontend issue (to be confirmed and fixed separately), where the it is not encoding the field types: https://emqx.atlassian.net/browse/EMQX-8461?focusedCommentId=24805 |
||
---|---|---|
.. | ||
i18n | ||
include | ||
src | ||
test | ||
.gitignore | ||
README.md | ||
rebar.config |
README.md
emqx_ee_connector
An OTP application
Build
$ rebar3 compile