You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重复启动CnosDB 2.3.3触发Panic崩溃问题咨询

问题:CnosDB 2.3.3重复启动触发Panic崩溃

环境信息

  • CnosDB版本:2.3.3(修订版本号:d86358a6fc813f4b83b36f0005448e7140a2d4e0)
  • 启动命令:./targetrelease/cnosdb run --config ./config/config_8902.toml -M singleton

问题现象

重复启动程序时触发Panic崩溃,核心原因是网络连接被重置,且代码未处理该错误,直接调用Result::unwrap()导致崩溃。

完整报错日志

2023-10-25T10:34:59.576844000+08:00 DEBUG cnosdb::meta_single::meta_service: watch.1001 17.17: change logs: WatchData { full_sync: false, min_ver: 15, max_ver: 17, entry_logs: [] } 
应用程序触发Panic(崩溃)。
消息: 在Err值上调用了`Result::unwrap()`: MetaClientErr { msg: "NetworkError: reqwest::error::Error: error sending request for url (http://127.0.0.1:8901/write): connection error: Connection reset by peer (os error 54) source: connection error: Connection reset by peer (os error 54) source: Connection reset by peer (os error 54)" }
位置: main/src/server.rs:188

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 回溯信息 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                ⋮ 10 帧被隐藏 ⋮                               
  11: cnosdb::server::ServiceBuilder::build_query_storage::{{closure}}::h18bc817435fd5030
      at <unknown source file>:<unknown line>
  12: cnosdb::main::{{closure}}::hc53e26088ca8ad83
      at <unknown source file>:<unknown line>
  13: cnosdb::main::h8b6b5feb807acbf4
      at <unknown source file>:<unknown line>
  14: std::sys_common::backtrace::__rust_begin_short_backtrace::heaff541c935b36c6
      at <unknown source file>:<unknown line>
  15: std::rt::lang_start::{{closure}}::h221f8e367097f1d8
      at <unknown source file>:<unknown line>
  16: std::rt::lang_start_internal::h672762ded3eb0218
      at <unknown source file>:<unknown line>
  17: _main<unknown>
      at <unknown source file>:<unknown line>

设置环境变量COLORBT_SHOW_HIDDEN=1可禁用帧过滤。
设置环境变量RUST_BACKTRACE=full可包含代码片段。

问题分析

  1. 崩溃直接原因:代码中未对网络请求的错误结果做捕获处理,直接调用unwrap(),导致连接错误触发Panic。
  2. 场景诱因:重复启动时,旧进程可能未完全释放端口或资源,新进程尝试连接旧实例的服务端口(8901)时被拒绝,进而触发未处理的错误。

临时解决方案

  • 启动前确认已有CnosDB进程完全终止:执行ps aux | grep cnosdb查找进程,再用kill -9 <进程ID>强制终止。
  • 修改配置文件,确保新启动实例使用独立端口,避免与旧实例端口冲突。
  • 若需深入排查,可设置环境变量RUST_BACKTRACE=full获取完整调用栈,定位更具体的代码逻辑。

内容的提问来源于stack exchange,提问作者cosmic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:43:23