使用规则引擎监听设备下线,有时候会频繁推送设备下线内容,并且下线原因为:“function_clause”

环境信息

  • EMQ X 版本:
  • 操作系统及版本:
  • 其他

问题描述

规则如下:

然后,推送接收到的下线信息中的reason值为“function_clause”;
请问是什么导致设备下线?

配置文件及日志

有设备业务异常, 需要结合一下日志内容 debug 。

请问这个日志内容debug是指emqx/log/里面的文件内容吗?

是的,看下日志里,应该是有报错信息的

好的!谢谢!我看还能不能找到日志

问题复现了。如下图所示:

日志列表如下图所示,按照修改时间,应该是第1和第2个文件。

erlang.log.1,在对应时间点没有相关记录:
image

然后,在emqx.log.3中,找到如下日志:


2021-10-29T16:18:00.505561+08:00 [error] 2038001105@39.144.10.190:36649 [MQTT] , Parse failed for function_clause, [{emqx_frame,split,[8,<<64,2,0,4>>],[{file,“emqx_frame.erl”},{line,130}]},{emqx_frame,parse,2,[{file,“emqx_frame.erl”},{line,125}]},{emqx_connection,parse_incoming,3,[{file,“emqx_connection.erl”},{line,583}]},{emqx_connection,handle_msg,2,[{file,“emqx_connection.erl”},{line,576}]},{emqx_connection,process_msg,2,[{file,“emqx_connection.erl”},{line,325}]},{emqx_connection,handle_recv,3,[{file,“emqx_connection.erl”},{line,290}]},{proc_lib,wake_up,3,[{file,“proc_lib.erl”},{line,236}]}], Frame data:<<64,2,0,4>>

请问是什么问题导致设备下线?

EMQX版本是?

版本是4.3.8

1635822666(1)