• 作成:

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.

rust-slack/CHANGELOG.md at master · frostly/rust-slack

なるほど.

短絡的な対処方法

とりあえず

slack-hook = "0.7.0"

することで対処しました.

本格的な対処方法

rust-slackのsendの非同期版を作る.

言いたいこと

いくらメジャーバージョン1出てないとは言えマイナーバージョンでこんな大破壊を起こさないで欲しい.