Force to close the socket due to function_clause

错误报告

2023-01-17T12:54:21.041436+00:00 [debug] 172.20.0.1:34568 [MQTT] Force to close the socket due to function_clause

环境

  • EMQX 版本:4.4.5
  • 操作系统版本:Debian 10.2

预期行为

遗嘱消息 应该在设置的心跳超时时间(120s)之后上报

实际行为

有的时候正常是超过心跳时间之后再上报遗嘱消息,但是有的时候不是。

2023-01-17T12:54:20.934972+00:00 [debug] 172.20.0.1:34568 [MQTT] RECV PUBLISH(Q0, R0, D0Topic=event/up, PacketId=undefined, Payload=MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfCTJJV5CI0ffL2fnYe9v5YDUYOfZptMjqQ4wlnFLc4B2Sczug4d65X/zxEplxnHffWYAB9JEDFxfxZKNKXrIDOq2afL3zzFYlvyjrAb/5lNQxdYLIX6s4EEBXmMyBAVXPWvkvNUHLRSLlbYW3fDpJtr7w+pIimQtdtwAiVfNoQ83Z8OPWOzo7eItJZAFyeAnKqanGZ/AbbFMMJ9+aR/cDkwC7O7tPXi7F1xh6ylTPnKNnAF8I64ryyLwpV2GSdo4uU=)
2023-01-17T12:54:20.935021+00:00 [info] 172.20.0.1:34568 PUBLISH to event/up: <<“MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfCTJJV5CI0ffL2fnYe9v5YDUYOfZptMjqQ4wlnFLc4B2Sczug4d65X/zxEplxnHffWYAB9JEDFxfxZKNKXrIDOq2afL3zzFYlvyjrAb/5lNQxdYLIX6s4EEBXmMyBAVXPWvkvNUHLRSLlbYW3fDpJtr7w+pIimQtdtwAiVfNoQ83Z8OPWOzo7eItJZAFyeAnKqanGZ/AbbFMMJ9+aR/cDkwC7O7tPXi7F1xh6ylTPnKNnAF8I64ryyLwpV2GSdo4uU=”>>
2023-01-17T12:54:20.935064+00:00 [debug] 172.20.0.1:34568 ‘$kind’: gen_rpc_client_process_found
pid: <0.2249.0>
target: {‘emqx01@172.20.0.100’,1}
2023-01-17T12:54:20.935123+00:00 [debug] 172.20.0.1:34568 [MQTT] RECV PUBLISH(Q0, R0, D0Topic=event/up, PacketId=undefined, Payload=MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfD91av4xVmdTk08su3MGTb3kn2rYmSqOBuQ7yUEWvTwXmRX4ReispNvP3eIVwcPGiS1hIDD/kewszR/KCfvU2NHEsjoyurp6DT4rI2XHDZSoApep97gfth//2Ly9k2SIHhxdE1vAldVVMr8rngfH4EWdZkodyTt6IRUL1r73HAAIqRZAoTb7Q418/XDEAp79whl9j7cRyh8489igc44SCcTLwf+udf5A1RpM+zAFRVr7wbsLb5b+V3W7Ub7KToffug=)
2023-01-17T12:54:20.935181+00:00 [info] 172.20.0.1:34568 PUBLISH to event/up: <<“MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfD91av4xVmdTk08su3MGTb3kn2rYmSqOBuQ7yUEWvTwXmRX4ReispNvP3eIVwcPGiS1hIDD/kewszR/KCfvU2NHEsjoyurp6DT4rI2XHDZSoApep97gfth//2Ly9k2SIHhxdE1vAldVVMr8rngfH4EWdZkodyTt6IRUL1r73HAAIqRZAoTb7Q418/XDEAp79whl9j7cRyh8489igc44SCcTLwf+udf5A1RpM+zAFRVr7wbsLb5b+V3W7Ub7KToffug=”>>
2023-01-17T12:54:20.935247+00:00 [debug] 172.20.0.1:34568 ‘$kind’: gen_rpc_client_process_found
pid: <0.2249.0>
target: {‘emqx01@172.20.0.100’,1}
2023-01-17T12:54:20.935310+00:00 [debug] 172.20.0.1:34568 [MQTT] RECV PUBLISH(Q0, R0, D0Topic=event/up, PacketId=undefined, Payload=MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfCTJJV5CI0ffL2fnYe9v5YDUYOfZptMjqQ4wlnFLc4B2Sczug4d65X/zxEplxnHffWYAB9JEDFxfxZKNKXrIDOq2afL3zzFYlvyjrAb/5lNQxdYLIX6s4EEBXmMyBAVXPWvkvNUHLRSLlbYW3fDpJtr7w+pIimQtdtwAiVfNoQ83Z8OPWOzo7eItJZAFyeAnKqanGZ/AbbFMMJ9+aR/cDkwC7O7tPXi7F1xh6ylTPnKNnAF8I64ryyLwpV2GSdo4uU=)
2023-01-17T12:54:20.935364+00:00 [info] 172.20.0.1:34568 PUBLISH to event/up: <<“MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfCTJJV5CI0ffL2fnYe9v5YDUYOfZptMjqQ4wlnFLc4B2Sczug4d65X/zxEplxnHffWYAB9JEDFxfxZKNKXrIDOq2afL3zzFYlvyjrAb/5lNQxdYLIX6s4EEBXmMyBAVXPWvkvNUHLRSLlbYW3fDpJtr7w+pIimQtdtwAiVfNoQ83Z8OPWOzo7eItJZAFyeAnKqanGZ/AbbFMMJ9+aR/cDkwC7O7tPXi7F1xh6ylTPnKNnAF8I64ryyLwpV2GSdo4uU=”>>
2023-01-17T12:54:20.935404+00:00 [debug] 172.20.0.1:34568 ‘$kind’: gen_rpc_client_process_found
pid: <0.2249.0>
target: {‘emqx01@172.20.0.100’,1}
2023-01-17T12:54:21.040538+00:00 [debug] 172.20.0.1:34568 [MQTT] RECV <<48,182,2,0,8,101,118,101,110,116,47,117,112,77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,68,57,49,97,118,52,120,86,109,100,84,107,48,56,115,117,51,77,71,84,98,51,107,110,50,114,89,109,83,113,79,66,117,81,55,121,85,69,87,118,84,119,88,109,82,88,52,82,101,105,115,112,78,118,80,51,101,73,86,119,99,80,71,105,83,49,104,73,68,68,47,107,101,48,182,2,0,8,101,118,101,110,116,47,117,112,77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,68,57,49,97,118,52,120,86,109,100,84,107,48,56,115,117,51,77,71,84,98,51,107,110,50,114,89,109,83,113,79,66,117,81,55,121,85,69,87,118,84,119,88,109,82,88,52,82,101,105,115,112,78,118,80,51,101,73,86,119,99,80,71,105,83,49,104,73,68,68,47,107,101,119,115,122,82,47,75,67,102,118,85,50,78,72,69,115,106,111,121,117,114,112,54,68,84,52,114,73,50,88,72,68,90,83,111,65,112,101,112,57,55,103,102,116,104,47,47,50,76,121,57,107,50,83,73,72,104,120,100,69,49,118,65,108,100,86,86,77,114,56,114,110,103,102,72,52,69,87,100,90,107,111,100,121,84,116,54,73,82,85,76,49,114,55,51,72,65,65,73,113,82,90,65,111,84,98,55,81,52,49,56,47,88,68,69,65,112,55,57,119,104,108,57,106,55,99,82,121,104,56,52,56,57,105,103,99,52,52,83,67,99,84,76,119,102,43,117,100,102,53,65,49,82,112,77,43,122,65,70,82,86,114,55,119,98,115,76,98,53,98,43,86,51,87,55,85,98,55,75,84,111,102,102,117,103,61,48,182,2,0,8,101,118,101,110,116,47,117,112,77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,67,84,74,74,86,53,67,73,48,102,102,76,50,102,110,89,101,57,118,53,89,68,85,89,79,102,90,112,116,77,106,113,81,52,119,108,110,70,76,99,52,66,50,83,99,122,117,103,52,100,54,53,88,47,122,120,69,112,108,120,110,72,102,102,87,89,65,66,57,74,69,68,70,120,102,120,90,75,78,75,88,114,73,68,79,113,50,97,102,76,51,122,122,70,89,108,118,121,106,114,65,98,47,53,108,78,81,120,100,89,76,73,88,54,115,52,69,69,66,88,109,77,121,66,65,86,88,80,87,118,107,118,78,85,72,76,82,83,76,108,98,89,87,51,102,68,112,74,116,114,55,119,43,112,73,105,109,81,116,100,116,119,65,105,86,102,78,111,81,56,51,90,56,79,80,87,79,122,111,55,101,73,116,74,90,65,70,121,101,65,110,75,113,97,110,71,90,47,65,98,98,70,77,77,74,57,43,97,82,47,99,68,107,119,67,55,79,55,116,80,88,105,55,70,49,120,104,54,121,108,84,80,110,75,78,110,65,70,56,73,54,52,114,121,121,76,119,112,86,50,71,83,100,111,52,117,85,61>>
2023-01-17T12:54:21.040743+00:00 [error] 172.20.0.1:34568 [MQTT]
Parse failed for function_clause
[{emqx_frame,parse_packet,[{mqtt_packet_header,6,false,2,false},<<“1vAldVVMr8rngfH4EWdZkodyTt6IRUL1r73HAAIqRZAoTb7Q418/XDEAp79whl9j7cRyh”>>,#{max_size => 1048576,strict_mode => false,version => 4}],[{file,“emqx_frame.erl”},{line,224}]},{emqx_frame,parse_frame,4,[{file,“emqx_frame.erl”},{line,201}]},{emqx_connection,parse_incoming,3,[{file,“emqx_connection.erl”},{line,655}]},{emqx_connection,handle_msg,2,[{file,“emqx_connection.erl”},{line,648}]},{emqx_connection,process_msg,2,[{file,“emqx_connection.erl”},{line,394}]},{emqx_connection,handle_recv,3,[{file,“emqx_connection.erl”},{line,358}]},{proc_lib,wake_up,3,[{file,“proc_lib.erl”},{line,236}]}]
Frame data:<<100,69,49,118,65,108,100,86,86,77,114,56,114,110,103,102,72,52,69,87,100,90,107,111,100,121,84,116,54,73,82,85,76,49,114,55,51,72,65,65,73,113,82,90,65,111,84,98,55,81,52,49,56,47,88,68,69,65,112,55,57,119,104,108,57,106,55,99,82,121,104,56,52,56,57,105,103,99,52,52,83,67,99,84,76,119,102,43,117,100,102,53,65,49,82,112,77,43,122,65,70,82,86,114,55,119,98,115,76,98,53,98,43,86,51,87,55,85,98,55,75,84,111,102,102,117,103,61,48,182,2,0,8,101,118,101,110,116,47,117,112,77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,67,84,74,74,86,53,67,73,48,102,102,76,50,102,110,89,101,57,118,53,89,68,85,89,79,102,90,112,116,77,106,113,81,52,119,108,110,70,76,99,52,66,50,83,99,122,117,103,52,100,54,53,88,47,122,120,69,112,108,120,110,72,102,102,87,89,65,66,57,74,69,68,70,120,102,120,90,75,78,75,88,114,73,68,79,113,50,97,102,76,51,122,122,70,89,108,118,121,106,114,65,98,47,53,108,78,81,120,100,89,76,73,88,54,115,52,69,69,66,88,109,77,121,66,65,86,88,80,87,118,107,118,78,85,72,76,82,83,76,108,98,89,87,51,102,68,112,74,116,114,55,119,43,112,73,105,109,81,116,100,116,119,65,105,86,102,78,111,81,56,51,90,56,79,80,87,79,122,111,55,101,73,116,74,90,65,70,121,101,65,110,75,113,97,110,71,90,47,65,98,98,70,77,77,74,57,43,97,82,47,99,68,107,119,67,55,79,55,116,80,88,105,55,70,49,120,104,54,121,108,84,80,110,75,78,110,65,70,56,73,54,52,114,121,121,76,119,112,86,50,71,83,100,111,52,117,85,61>>
2023-01-17T12:54:21.041196+00:00 [debug] 172.20.0.1:34568 [MQTT] RECV PUBLISH(Q0, R0, D0Topic=event/up, PacketId=undefined, Payload=MlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfD91av4xVmdTk08su3MGTb3kn2rYmSqOBuQ7yUEWvTwXmRX4ReispNvP3eIVwcPGiS1hIDD/ke0¶ event/upMlHlVdLUOtQ+IdU1VDQsXB6QZ/9wVa49X4HuJNZTwfD91av4xVmdTk08su3MGTb3kn2rYmSqOBuQ7yUEWvTwXmRX4ReispNvP3eIVwcPGiS1hIDD/kewszR/KCfvU2NHEsjoyurp6DT4rI2XHDZSoApep97gfth//2Ly9k2SIHhx)
2023-01-17T12:54:21.041254+00:00 [info] 172.20.0.1:34568 PUBLISH to event/up: <<77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,68,57,49,97,118,52,120,86,109,100,84,107,48,56,115,117,51,77,71,84,98,51,107,110,50,114,89,109,83,113,79,66,117,81,55,121,85,69,87,118,84,119,88,109,82,88,52,82,101,105,115,112,78,118,80,51,101,73,86,119,99,80,71,105,83,49,104,73,68,68,47,107,101,48,182,2,0,8,101,118,101,110,116,47,117,112,77,108,72,108,86,100,76,85,79,116,81,43,73,100,85,49,86,68,81,115,88,66,54,81,90,47,57,119,86,97,52,57,88,52,72,117,74,78,90,84,119,102,68,57,49,97,118,52,120,86,109,100,84,107,48,56,115,117,51,77,71,84,98,51,107,110,50,114,89,109,83,113,79,66,117,81,55,121,85,69,87,118,84,119,88,109,82,88,52,82,101,105,115,112,78,118,80,51,101,73,86,119,99,80,71,105,83,49,104,73,68,68,47,107,101,119,115,122,82,47,75,67,102,118,85,50,78,72,69,115,106,111,121,117,114,112,54,68,84,52,114,73,50,88,72,68,90,83,111,65,112,101,112,57,55,103,102,116,104,47,47,50,76,121,57,107,50,83,73,72,104,120>>
2023-01-17T12:54:21.041393+00:00 [debug] 172.20.0.1:34568 ‘$kind’: gen_rpc_client_process_found
pid: <0.2249.0>
target: {‘emqx01@172.20.0.100’,1}
2023-01-17T12:54:21.041436+00:00 [debug] 172.20.0.1:34568 [MQTT] Force to close the socket due to function_clause
2023-01-17T12:54:21.041538+00:00 [info] 172.20.0.1:34568 PUBLISH to will/up: <<“H6o7lMHVaZ/lMR1ocYXimv6gyT8x204mK+Th6bQQmdBO2LuLajBGX9j+1/JYRKDXviNCDGtygRoFA110ECXjG/T3fskH4AWbFProCeZ9m2U=”>>
2023-01-17T12:54:21.041592+00:00 [debug] 172.20.0.1:34568 ‘$kind’: gen_rpc_client_process_found
pid: <0.13268.1>
target: {‘emqx02@172.20.0.101’,2}

报文格式有问题,所以连接被提前断开了,遗嘱消息也就提前下发了。

有没有办法关闭这个功能呢?也就是 就算格式有问题 也不提前断开连接

这个是不行的,底层 TCP 是数据流,只要数据发生了错误,就无法在当前连接上恢复了,所以连接保留着也没有任何用户。