Skip to content

[GRDM-62502] E2E Testにおける20250906からのアップグレード試験でmigrationが失敗する問題を修正 - #780

Draft
yacchin1205 wants to merge 1 commit into
RCOSDP:developfrom
yacchin1205:fix/migration-historical-models-only
Draft

[GRDM-62502] E2E Testにおける20250906からのアップグレード試験でmigrationが失敗する問題を修正#780
yacchin1205 wants to merge 1 commit into
RCOSDP:developfrom
yacchin1205:fix/migration-historical-models-only

Conversation

@yacchin1205

Copy link
Copy Markdown

Purpose

E2E Test における 20250906 からのアップグレード試験で、osf.0267_split_name_fields の適用中に django.db.utils.ProgrammingError: column osf_osfuser.ial does not exist で失敗し、アップグレードが完了しません。#777ial プロパティ追加前に 267, 270 の migration を適用していれば、本問題は発生しません。

0267 は data migration の中で現行モデルの FileMetadata.save() を呼んでおり、その save() が検索インデックスの更新を誘発して FileMetadata.creator(現行の OSFUser モデル)を参照します。migration の途中では osf_osfuser は 0267 時点のスキーマのままなので、それ以降に追加された列(今回は #777ial)を参照した時点で落ちます。

このため 0267 より後に osf_osfuser へ列を追加するたびに、過去バージョンからのアップグレードが遡って壊れます。FileMetadata のレコードが存在する環境でのみ発生し、レコードが無い新規構築では発生しません。同じ実装を使う osf.0270_remove_metadata_access_rights も同様です。

Changes

  • FileMetadataMigrator が historical model(apps.get_model)で対象を取得・保存するように変更(0267 / 0270 から apps を引き渡し)

QA Notes

  • data migration の実装を変更していますが、変換結果は従来と同一です。適用済みの環境では再実行されないため影響はありません
  • 権限判定のコードには触れていません

Documentation

None

Side Effects

None

Ticket

GRDM-62502

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.

1 participant