### What happened?
Environment
- EMQX Version: 6.1.0
- Deployment: Docker
- Cl…uster: Single node
- Connected devices: ~400 MQTT clients
- Consumer: Custom Node.js MQTT consumer
- OS: Linux
- Network: Stable (no obvious packet loss observed)
MQ Configuration
- Topic: prod/rf/message
- Dispatch strategy: Random
- Last-value semantics: Disabled
- Message retention: 7 days
- Consumer username: node-sub
- Client ID pattern: prod-rf-message-*
Problem Description
After running normally for a period of time, the MQ consumer silently stops consuming messages, while:
- MQTT connection remains alive
- PINGREQ / PINGRESP continue normally
- Consumer side does not report any error
- Messages are no longer delivered
### What did you expect to happen?
fix it
### How can we reproduce it (as minimally and precisely as possible)?
_No response_
### Anything else we need to know?
_No response_
### EMQX version
6.1.0
### OS version
_No response_
### Log files
```
{"time":"2026-02-02T00:51:25.327206+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993485327196,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.241270>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:26.331921+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993486331903,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.241385>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:27.337230+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993487337213,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.132744>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:28.342378+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993488342366,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.133085>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:29.347106+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993489347092,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.133321>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:30.351367+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993490351357,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2943156225.37435>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:31.355648+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993491355635,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2943156225.37928>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:32.359364+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993492359354,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.242021>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:33.363647+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993493363633,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.242221>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:34.368675+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993494368661,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.242423>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:35.373769+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993495373758,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.134902>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:36.378995+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993496378982,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.135141>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:37.384138+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993497384129,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.242819>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:51:38.387766+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993498387743,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2733965316.242958>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
//...每秒都会尝试
{"time":"2026-02-02T00:52:13.550312+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993533550298,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2911698946.128727>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
{"time":"2026-02-02T00:52:14.554270+00:00","msg":"mq_sub_handle_connect_error","meta":{"username":"node-sub","time":1769993534554259,"subscriber_ref":"#Ref<0.0.35512995.2962630970.2827812867.145713>","retry_interval":1000,"report_cb":"fun logger:format_otp_report/1","reason":"{error,{failed_to_open_consumer_state,{error,recoverable,leader_unavailable}}}","pid":"<0.2636741.0>","peername":"xxxx:54588","msg":"mq_sub_handle_connect_error","mq":"prod/rf/message","mfa":"{emqx_mq_sub,handle_connect,2}","line":156,"gl":"<0.4240.0>","file":"emqx_mq_sub.erl","clientid":"prod-rf-message-21"},"level":"error"}
//...每分钟会有个包
{"time":"2026-02-02T00:52:14.852985+00:00","msg":"mqtt_packet_received","meta":{"username":"node-sub","trace_tag":"MQTT","peername":"xxxx:54588","packet":"PINGREQ(Q0, R0, D0)","clientid":"prod-rf-message-21"},"level":"debug"}
{"time":"2026-02-02T00:52:14.853245+00:00","msg":"mqtt_packet_sent","meta":{"username":"node-sub","trace_tag":"MQTT","peername":"xxxxx:54588","packet":"PINGRESP(Q0, R0, D0)","clientid":"prod-rf-message-21"},"level":"debug"}
```