Skip to content

日報・言及記事ページのCSVデータ一括投入時にtitleが空の記事データが混入した問題についての原因調査#10161

Open
Miya096jp wants to merge 2 commits into
mainfrom
bug/data-migration-add-empty-buzz
Open

日報・言及記事ページのCSVデータ一括投入時にtitleが空の記事データが混入した問題についての原因調査#10161
Miya096jp wants to merge 2 commits into
mainfrom
bug/data-migration-add-empty-buzz

Conversation

@Miya096jp

@Miya096jp Miya096jp commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Issue

#10112

概要

#9102 で日報・言及記事ページのリニューアルと本番の記事データのdata migrationを行なったところ、本番DBのBuzzテーブルに空のレコードが1件混入した事象についての原因調査のPRです。

調査について

ローカル環境での確認は実施済みですので、確認不要です。

確認済みの内容

  1. ファイルを指定して実行
% rake db:migrate:with_data VERSION=20260609031840
  1. ログの内容を確認
    title, urlが空のレコードは存在しなかった
% cat log/development.log | grep "\[buzz-migration\]"                                                                                                      
[buzz-migration] Row 1: {"title" => "ブラウザにRubyとTypeProfを詰め込む。Ruby WASMで創るWebエディタ『Rubox』", "url" => "https://zenn.dev/sekito/articles/43971de2a6285a", "published_at" => "2026-02-07"}
[buzz-migration] Row 2: {"title" => "Ruby Silverに合格したのでメモなど - sugiweblog", "url" => "https://sugiwe.hatenablog.jp/entry/ruby-silver", "published_at" => "2026-02-07"}
....(以下省略

調査していただきたい内容

  • このPRの内容で問題なければマージいただき、デプロイ完了後に本番環境で次の確認をお願いできますでしょうか。(あらためてDiscordにて依頼させていただきます。)
  1. 次のprefixでログをgrep
"\[buzz-migration\]"
  1. titleとurlが空もしくはnilのレコードが混入していないかどうかを確認をお願いします。投入されるデータ件数は正常であれば1049件です。

Flakewatch Report

Summary by CodeRabbit

  • Chores
    • データベースのデータスキーマ バージョンが更新されました。
    • 新しいデータマイグレーションが追加され、CSV を基に複数レコードを作成する処理が導入されました(ロールバック不可の移行が含まれます)。

Flakewatch Report

Flakewatch Report

Review App

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

ヘッダ付き CSV を読み込み、各行をログ出力しながら同一タイムスタンプで created_at/updated_at を付与して Buzz レコードをトランザクション内で作成する新規データマイグレーション InspectEmptyBuzz を追加し、data_schema のバージョンを更新します。

Changes

Buzz レコード一括投入マイグレーション

Layer / File(s) Summary
CSV から Buzz レコード投入マイグレーション実装
db/data/20260609031840_inspect_empty_buzz.rb, db/data_schema.rb
新規マイグレーション InspectEmptyBuzz を実装し、db/fixtures/files/buzzes/inspect-empty-buzz.csv をヘッダ付きで読み込んで title/url/published_at から Buzz レコードを作成します。全行に同一の nowcreated_at/updated_at として設定し、ActiveRecord::Base.transaction 内で Buzz.create! を行います。各行を Rails.logger.info で出力し、downActiveRecord::IrreversibleMigration を発生させます。db/data_schema.rb の version を 2026_03_25_014711 から 2026_06_09_031840 に更新します.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Suggested reviewers

  • komagata

Poem

🐰 ぴょんと一行、CSV が来た
ひとつまたひとつ、Buzz が生まれた
トランザクションで safe に着地して
ログはぽんぽん、時間は同じ
ぴょんとスキーマも更新だよ

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed PRタイトルはCSV投入時の空title混入問題の原因調査という変更内容と一致しています。
Description check ✅ Passed Issueと概要、確認済み内容が記載されており、必要情報は概ね揃っています。
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bug/data-migration-add-empty-buzz

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Miya096jp Miya096jp marked this pull request as ready for review June 9, 2026 06:46
@github-actions github-actions Bot requested a review from okuramasafumi June 9, 2026 06:46

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@db/data/20260609031840_inspect_empty_buzz.rb`:
- Around line 26-29: In the migration method down, remove or comment out the
unreachable statement after the raise: the raise
ActiveRecord::IrreversibleMigration in down exits the method immediately, so the
subsequent Buzz.where(created_at: ['2026-02-12', '2026-02-14', '2026-03-01']) is
dead code—either delete that Buzz.where(...) line or convert it to a comment if
you want to keep it as a note.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7e629dbe-c28b-48f6-9a20-df71a9d6b822

📥 Commits

Reviewing files that changed from the base of the PR and between 7d3f744 and 38a91a5.

⛔ Files ignored due to path filters (1)
  • db/fixtures/files/buzzes/inspect-empty-buzz.csv is excluded by !**/*.csv
📒 Files selected for processing (2)
  • db/data/20260609031840_inspect_empty_buzz.rb
  • db/data_schema.rb

Comment thread db/data/20260609031840_inspect_empty_buzz.rb
@Miya096jp Miya096jp force-pushed the bug/data-migration-add-empty-buzz branch from 38a91a5 to d8bf232 Compare June 9, 2026 06:53
@Miya096jp

Copy link
Copy Markdown
Contributor Author

@komagata

お疲れさまです!
ご確認よろしくお願いいたします🙇🏻‍♂️

@Miya096jp Miya096jp changed the title 検証用のCSVとdata migrationファイルを作成 日報・言及記事ページのCSVデータ一括投入時にtitleが空の記事データが混入した問題についての原因調査 Jun 9, 2026
@komagata

komagata commented Jun 15, 2026

Copy link
Copy Markdown
Member

@Miya096jp ちょっと障害が起きていない本番DBにデータを投入するスクリプトを走らせるというのはちょっと避けたいちょっと考えさせてください。(データをREADするだけの処理だったら問題ないですが)

@Miya096jp

Copy link
Copy Markdown
Contributor Author

@komagata

了解しました、よろしくお願いいたします🙏
たしかにREADするだけでログは取れますね。
ちなみに原因は気になるのですが、実害が出ていない事象なので、深追いするのもよくないかなとちょっと迷っております。

@komagata

Copy link
Copy Markdown
Member

@Miya096jp 原因究明は必要です。ただ、WRITEするなどリスクの高いコードを実行する必要はないように思います。

@Miya096jp

Copy link
Copy Markdown
Contributor Author

@komagata

では、DB保存のトランザクションを削除し、READしてログを吐くのみに変更してみます。
また、問題が起きた時となるべく同じ条件で検証した方がいいと思うので、本番投入したCSVをREADするようにしようと考えています。(1000件ぐらい出力されてしまいますが)

この方向で進めてよろしいでしょうか?

@komagata

Copy link
Copy Markdown
Member

@Miya096jp いいと思います。

@Miya096jp Miya096jp force-pushed the bug/data-migration-add-empty-buzz branch from d8bf232 to 8129917 Compare July 4, 2026 01:50
@Miya096jp

Copy link
Copy Markdown
Contributor Author

@komagata

お疲れ様です。
DBへの書き込みは行わず、ログだけを出力するように修正しました。CSVも検証用のものではなく、以前本番投入したものを読み込むように変更しました。デプロイ後に本番環境でログのご確認をお願いしたいので、次回のリリース後にDiscordでお声かけさせていただきます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants