404エラーになるところで500エラーになっていた話
くふうAIスタジオのいあいあです。help-devをメインの戦場としていて、開発周りの社内の困りごとを解決するのが基本タスクです。
開発チーム外からの仕様の確認や修正、数値出しなどが主です。
それだけではなく、幅を広げて開発チームが持つようなタスクも拾っていこうねという話を前期行っていて、いくつか拾って開発を行ったんですが、謎い現象でごちゃごちゃやってて良かったという話をします。
前提
弊社ではトクバイだけではなく、トクバイニュース というサービスもRailsで開発しています。
4ヶ月ほど前に、このトクバイニュースで500エラーが多発していました。インフラエンジニアが調査したところ `/news/unknown` のような存在しないパスにアクセスすると404エラーではなく500エラーが発生することを発見し、インフラエンジニアだけでは消化しきれないと判断されhelp-devに上がることになりました。
調査(時系列)
実際に自分も同じような動作をしてみて再現するか確認する
この依頼に限らず、再現するかどうかは毎回確認するようにしています
今回で言えば `/news/unknown` などにアクセス
実装的に `/news/unknown` は404になるよねというのも確認済み
500エラーが発生し再現することを確認しました
本番のログを確認する
一切エラーのログが出てない!
何も調査できない
ローカルで再現させる
普段開発していないリポジトリなのでそもそも起動させる事自体が大変
こういう時に困るのでローカルで各種リポジトリを起動できる状態に維持するっていうことをやれるようにしておきたいですね
ローカルでRailsが起動できた
ローカルでも事象を再現させることができた
ローカルでもログが一切ない!
`consider_all_requests_local = true` にも関わらずエラーレポートの画面が出てない...
ログから推測する
ログの一部が無くても、ある部分からどういう挙動をして、どこで死んでエラーログを吐かないのか? は分かるはず
少なくともcontrollerを通っているようなログはなさそう
routesの定義がおかしくて、どこかのcontrollerで処理しようとした結果コケているわけではなさそう
controllerに来る前でコケるっていうのはどういうことだろう?
railsとかmiddlewareの問題か?
直近で関係ありそうな変更を見てみる
railsのバージョンアップが入ってる(rails 7.1になっていた)
バージョンアップの影響?
railsのバージョンを戻してみる
rails 6.1のコミットまで戻して動作確認 (他のエンジニアがやってくれた)
404が返っている
routing errorがログにも出ている
7.0でも404が返っていることを確認
つまり7.0から7.1の時に入った変更によって壊れてしまった
`config.action_dispatch.show_exceptions = :rescuable` を設定すると何か変わりそう?
rails7.1に戻して `config.action_dispatch.show_exceptions = :rescuable` を設定してみる
エラーログが出てきた!!
Puma caught this error: wrong number of arguments (given 3, expected 2) (ArgumentError)`
`/app/vendor/bundle/ruby/3.3.0/gems/sentry-raven-3.1.2/lib/raven/integrations/rails/overrides/debug_exceptions_catcher.rb:5:in render_exception
sentry-ravenでコケてるっぽい
`render_exception(env_or_request, exception)` が呼ばれるのを期待しているが、3個引数が渡されてしまっている
7.1 で入った変更 https://github.com/rails/rails/commit/c066440b92a31bfd5cdd78b4d2677fcf20860437
とにかくsentry-ravenでコケてそう
gemを外してみてもう一回再現させる
404ページでた :tada: :わーい:
改修
原因は分かったので、次の日には修正し、リリースを行いました。
sentry-raven はsentryの古いSDKです。
修正方針は非常に単純で 新しいSDKへのマイグレーションを案内している のでそれに従うだけでした。
ステータスのダッシュボードを監視していると、500エラー断続的に出ていたのが、リリースしたあとパタッと消えて出てこなくなりました :tada:
振り返り
自分しかやってないみたいに書いてますが、原因調査では複数のエンジニアでああでもないこうでもないと議論したり、ロールバックしたり、Railsのアップデートガイドを読んだりしてました
改めてありがとうございました :pray:
help-devの仕事の幅を広げられて良かったです
エンジニア側にもそういう活動してるよねという認知を広げられたかなと
普段インフラエンジニアにこの辺教えて〜をやっていて負荷をかけているので、反対に向こうからタスクをもらって解消出来たというのも良かったです
恩を返せました
くふうAIスタジオでは、採用活動を行っています。
当社は「AX で 暮らしに ひらめきを」をビジョンに、2023年7月に設立されました。
(AX=AI eXperience(UI/UX における AI/AX)とAI Transformation(DX におけるAX)の意味を持つ当社が唱えた造語)
くふうカンパニーグループのサービスの企画開発運用を主な事業とし、非エンジニアさえも当たり前にAIを使いこなせるよう、積極的なAI利活用を推進しています。
(サービスの一例:累計DL数1,000万以上の家計簿アプリ「Zaim」、月間利用者数1,600万人のチラシアプリ「トクバイ」等)
AXを活用した未来を一緒に作っていく仲間を募集中です。
ご興味がございましたら、以下からカジュアル面談のお申込みやご応募等お気軽にお問合せください。
https://open.talentio.com/r/1/c/kufu-ai-studio/homes/3849
ハッシュタグ
この記事が気に入ったらサポートをしてみませんか?