客户端连接成功后,被服务端断开连接,需清除Session后才能正常连接

环境

  • EMQX 版本:5.8.7
  • 操作系统版本:Debian

重现此问题的步骤

  1. 客户端连接服务器,Clean Start设置为false
  2. 使客户端意外掉线
  3. 客户端掉线期间,向客户端推送消息,飞行窗口有数据产生
    4.使客户端再次上线

预期行为

客户端正常连接,连接成功后可消费到离线期间数据

实际行为

客户端连接成功后,被服务端断开连接,需清除Session后才能正常连接

2025-10-29T15:47:28.737791+08:00 [error] supervisor: {esockd_connection_sup,<0.1188218.0>}, errorContext: connection_crashed, reason: {badarith,[{erlang,‘+’,[undefined,1],[{error_info,#{module => erl_erts_errors}}]},{emqx_persistent_session_ds,inc_seqno,2,[{file,“emqx_persistent_session_ds.erl”},{line,1619}]},{emqx_persistent_session_ds,‘-process_batch/8-fun-0-’,8,[{file,“emqx_persistent_session_ds.erl”},{line,1330}]},{lists,foldl,3,[{file,“lists.erl”},{line,1594}]},{emqx_persistent_session_ds,process_batch,8,[{file,“emqx_persistent_session_ds.erl”},{line,1323}]},{emqx_persistent_session_ds,do_enqueue_batch,7,[{file,“emqx_persistent_session_ds.erl”},{line,1261}]},{emqx_persistent_session_ds,handle_ds_reply,3,[{file,“emqx_persistent_session_ds.erl”},{line,1149}]},{emqx_persistent_session_ds,handle_info,3,[{file,“emqx_persistent_session_ds.erl”},{line,722}]},{emqx_channel,handle_info,2,[{file,“emqx_channel.erl”},{line,1670}]},{emqx_connection,with_channel,3,[{file,“emqx_connection.erl”},{line,848}]},{emqx_connection,process_msg,2,[{file,“emqx_connection.erl”},{line,495}]},{emqx_connection,handle_recv,3,[{file,“emqx_connection.erl”},{line,446}]},{proc_lib,wake_up,3,[{file,“proc_lib.erl”},{line,251}]}]}, offender: [{pid,<0.1188218.0>},{name,connection},{mfargs,{emqx_connection,start_link,[#{listener => {tcp,default},limiter => #{connection => #{initial => 0,burst => 0,rate => infinity}},enable_authn => true,zone => default}]}}]

这个是你开持久化 session, 他有 bug,可以直接升级到最新版本,解决了的

感谢!社区版最新版本(5.8.8)修复了这个问题了吗?还是说需要更新到6.0?

5.8.8 应该有修复了。