重复启动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可包含代码片段。
问题分析
- 崩溃直接原因:代码中未对网络请求的错误结果做捕获处理,直接调用
unwrap(),导致连接错误触发Panic。 - 场景诱因:重复启动时,旧进程可能未完全释放端口或资源,新进程尝试连接旧实例的服务端口(8901)时被拒绝,进而触发未处理的错误。
临时解决方案
- 启动前确认已有CnosDB进程完全终止:执行
ps aux | grep cnosdb查找进程,再用kill -9 <进程ID>强制终止。 - 修改配置文件,确保新启动实例使用独立端口,避免与旧实例端口冲突。
- 若需深入排查,可设置环境变量
RUST_BACKTRACE=full获取完整调用栈,定位更具体的代码逻辑。
内容的提问来源于stack exchange,提问作者cosmic
相关产品推荐
相关产品推荐

