排队mongodb时程序崩溃,像这样:
incoming body completed thread 'actix-rt|system:0|arbiter:0' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: ServerSelection { message: "Server selection timeout: No available servers. Topology: { Type: Unknown, Servers: [ { Address: 127.0.0.1:27017, Type: Unknown }, ] }" }, labels: {}, wire_version: None, source: None }', src/user/info.rs:72:79
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
我先尝试了程序和数据库的连接,发现程序可以正确插入数据库。然后我检查我的生锈版本。我尝试了几个版本,我尝试了 beta 和 nightly(其中一个使用的板条箱不能在稳定版上编译),它没有字。然后查看commit history,最后发现去掉下面的代码,程序运行正常,添加后,程序panic。
pub async fn listener() {
let mut buffer = "".to_string();
let stdin = io::stdin();
loop { //PS: The program runs well with out this loop
match stdin.read_line(&mut buffer) {
Ok(_) => {}
Err(e) => {println!("Cannot get input: {}" , e);}
};
let input = buffer[..buffer.len() - 1].to_string();
router(input).await;
buffer = "".to_string();
}
}
这是由这个发起的:
tokio::spawn(async {command::listener().await;});
此外,我检查了 router() 和它里面的所有东西,发现即使我删除它们仍然不起作用。