操作
Bug(バグ) #2901
完了OpenPNE2系からコンバートした環境で管理画面から強制退会が出来ない現象が発生する場合がある
開始日:
2012-03-26
期日:
進捗率:
100%
予定工数:
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
いいえ
3.8 で発生するか:
説明
Overview (現象)¶
OpenPNE2系からコンバートした環境で管理画面から強制退会が出来ない現象が発生する場合がある。
ashiato テーブルの memmber_id_to, memmber_id_from が存在しないメンバーID の場合に退会処理に失敗する。
コンバーターはOpenPNEコア側の機能で判断に迷う所ですが、本件の原因はプラグインにあると判断しこちらにチケットを作成しました。
opAshiatoPluginプロジェクトにチケットを作成するのが不適切でしたら、お手数ですがOpenPNE3コアのプロジェクトにチケットの移動をお願いいたします。
再現バージョン¶
- OpenPNE3.6.2
- opAshiatoPlugin1.1.0
再現手順¶
- ashiato テーブルの memmber_id_to または memmber_id_from に存在しないメンバーIDの値があるメンバーデータを準備する
- 手順1で準備したメンバーを管理画面より強制退会する
- 「サーバーが混み合ってます・・・・」のエラーメッセージが表示される(devモードで確認すると外部キー制約違反のエラーが表示される)
Causes (原因)¶
バグが発生した原因を記入
Way to fix (修正内容)¶
修正内容を記入
Hidenori Goto さんが12年以上前に更新
原因箇所¶
OpenPNE2側で強制退会をしても、当該メンバーに関連するc_access_logレコードは無加工のまま残ります。これをOpenPNE3にコンバートした場合、通常使用時は影響ないが、管理画面から強制退会を行うとashiatoレコードの更新(退会するメンバーの箇所をnullにする on delete set nullが走る)を行うため、この時点で参照整合性エラーとなります。
修正方針¶
- 管理画面の強制退会処理時のみ、適切に扱えればよいと考えます。
- 今回の処理で参照整合性エラーとなるレコードは、削除されてよいレコードであると考えます。
- 強制退会画面のPOST処理時に、preイベントをフックして不正ashiatoレコードの除去処理を行うよう処理を追加します。(opAshiatoPlugin側)
Hidenori Goto さんが12年以上前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが12年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
下記コミットで master へマージしました.
https://github.com/tejimaya/opAshiatoPlugin/commit/181be00ff49854edd9733441c0bf67aec6625964
また,空白文字や改行記号が変だったため簡単に修正しました.
https://github.com/tejimaya/opAshiatoPlugin/commit/aee24c2cea1a6fceabd33cf4c74843233deb4580
Yuma Sakata さんが12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。
操作