見出し画像

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` にも関わらずエラーレポートの画面が出てない...


routing errorの画面にならない…
  • ログから推測する

    • ログの一部が無くても、ある部分からどういう挙動をして、どこで死んでエラーログを吐かないのか? は分かるはず

    • 少なくともcontrollerを通っているようなログはなさそう

      • routesの定義がおかしくて、どこかのcontrollerで処理しようとした結果コケているわけではなさそう

    • controllerに来る前でコケるっていうのはどういうことだろう?

      • railsとかmiddlewareの問題か?

  • 直近で関係ありそうな変更を見てみる

    • railsのバージョンアップが入ってる(rails 7.1になっていた)

    • バージョンアップの影響?

  • railsのバージョンを戻してみる

    • rails 6.1のコミットまで戻して動作確認 (他のエンジニアがやってくれた)

      • 404が返っている

      • routing errorがログにも出ている

    • 7.0でも404が返っていることを確認

    • つまり7.0から7.1の時に入った変更によって壊れてしまった

  • 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 はsentryの古いSDKです。
修正方針は非常に単純で 新しいSDKへのマイグレーションを案内している のでそれに従うだけでした。
ステータスのダッシュボードを監視していると、500エラー断続的に出ていたのが、リリースしたあとパタッと消えて出てこなくなりました :tada:


リリースした直後から0件に

振り返り

  • 自分しかやってないみたいに書いてますが、原因調査では複数のエンジニアでああでもないこうでもないと議論したり、ロールバックしたり、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

ハッシュタグ

#中途採用 #エンジニア採用 #採用広報 #株式会社くふうAIスタジオ #テックブログ

この記事が気に入ったらサポートをしてみませんか?