reqwestのマイナーバージョンアップで間接的にプログラムが動かなくなりました
問題
slack-hook - Cargo: packages for Rust が
Error(Reqwest(Error(Executor(EnterError { reason: "attempted to run an executor while another executor is already running" }), "https://hooks.slack.com/services/foobarhogehuga")), State { next_error: None, backtrace: Some(stack backtrace:
のようなエラーを出してエラーになります.
私のプログラムではこれは「致命的エラー」ではないため見過ごされていました. これが問題を長引かせることになります. エラーが起きた瞬間にわかっていればすぐ対処できた問題なのでしたが.
原因
attempted to run an executor while another executor is already running. · Issue #541 · seanmonstar/reqwest によります. 要するに reqwestは0.9から同期ネットワークIOがFutureの中で行われるとエラーを引き起こすようにしたようですね.
ここでslack-hookのチェンジログを見てみましょう.
reqwest updated to 0.9. hex updated to 0.3.
なるほど.
短絡的な対処方法
とりあえず
slack-hook = "0.7.0"
することで対処しました.
本格的な対処方法
rust-slackのsend
の非同期版を作る.
言いたいこと
いくらメジャーバージョン1出てないとは言えマイナーバージョンでこんな大破壊を起こさないで欲しい.