后台管理页面>监控>客户端 打开时报错

环境

  • EMQX 版本:v5.3.0
  • 操作系统版本:debian 12 docker

重现此问题的步骤

  1. 打开EMQX后台管理页面
  2. 登录
  3. 点击 监控>客户端

预期行为

显示所有在连接的客户端

实际行为

报错文本:
500 INTERNAL_ERROR: error, function_clause, [{emqx_mgmt_api_clients,convert_expiry_interval_unit,[#{send_pend => 0,is_superuser => false,send_oct => 0,is_bridge => false,zone => default,sockport => 7883,session => undefined,‘send_msg.qos2’ => 0,peercert => nossl,sockname => {{172,23,5,3},7883},‘send_msg.dropped.queue_full’ => 0,conn_state => idle,‘send_msg.dropped’ => 0,enable_authn => true,sockstate => blocked,socktype => tcp,peername => {{172,23,5,3},56399},port => 56399,‘recv_msg.qos0’ => 0,‘recv_msg.dropped.await_pubrel_timeout’ => 0,send_pkt => 0,node => ‘emqx@127.0.1.1’,recv_pkt => 0,protocol => mqtt,listener => ‘tcp:tcp’,‘recv_msg.qos2’ => 0,‘send_msg.qos1’ => 0,send_msg => 0,peerhost => {172,23,5,3},conn_mod => emqx_connection,recv_msg => 0,mailbox_len => 0,clientid => undefined,heap_size => 10958,recv_oct => 409520,‘send_msg.dropped.too_large’ => 0,‘send_msg.qos0’ => 0,‘recv_msg.qos1’ => 0,send_cnt => 0,‘send_msg.dropped.expired’ => 0,ip_address => <<“172.23.5.3”>>,mountpoint => undefined,recv_cnt => 100,‘recv_msg.dropped’ => 0,username => undefined,reductions => 14278}],[{file,“emqx_mgmt_api_clients.erl”},{line,974}]},{emqx_mgmt_api_clients,format_channel_info,2,[{file,“emqx_mgmt_api_clients.erl”},{line,902}]},{lists,map,2,[{file,“lists.erl”},{line,1315}]},{emqx_mgmt_api,‘-format_query_result/3-fun-1-’,3,[{file,“emqx_mgmt_api.erl”},{line,587}]},{lists,foldl,3,[{file,“lists.erl”},{line,1350}]},{emqx_mgmt_api,format_query_result,3,[{file,“emqx_mgmt_api.erl”},{line,585}]},{emqx_mgmt_api_clients,list_clients,1,[{file,“emqx_mgmt_api_clients.erl”},{line,665}]},{minirest_handler,apply_callback,3,[{file,“minirest_handler.erl”},{line,123}]},{minirest_handler,handle,2,[{file,“minirest_handler.erl”},{line,51}]},{minirest_handler,init,2,[{file,“minirest_handler.erl”},{line,27}]},{cowboy_handler,execute,2,[{file,“cowboy_handler.erl”},{line,41}]},{cowboy_stream_h,execute,3,[{file,“cowboy_stream_h.erl”},{line,318}]},{cowboy_stream_h,request_process,3,[{file,“cowboy_stream_h.erl”},{line,302}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,240}]}]

看起来都是修过的问题。升级到 emqx 5.8.0 吧,但你需要把你配置过的功能,手动重新配置到新版本 emqx 上去。

持久化文件可以重用吗?还是所有持久化文件也需要干掉?

虽然实际上已经做过兼容性的工作了,但如果可以就都删掉吧,data 目录不要留东西。然后手动在新版本节点上创建。

那当前的 客户端认证->内置数据库 中的东西,应如何保存呢?内置数据库是不推荐的吗?

另外请教一下,我是基于docker安装的,是不是需要把老容器整个干掉,并基于新的镜像创建一个新的容器,是不是只能这样升级?