Opened 12 years ago
Closed 12 years ago
#4451 closed defect (fixed)
Slave環境にて 日記カテゴリの追加・編集・削除を行うとデータ不整合が生まれる危険がある
Reported by: | kiwpon | Owned by: | imamura623 |
---|---|---|---|
Priority: | minor | Milestone: | OpenPNE2.14.8 |
Component: | 指定しない | Version: | 2.14.x |
Keywords: | Cc: |
Description
■概要
Slave 環境にて、遅延が発生している状態で日記カテゴリの操作を行うと、以下のようなデータの不整合が生まれる危険がある
- 同じ名前の日記カテゴリが重複して登録される
- 日記編集時に日記カテゴリが反映されない
- 登録日記が0件の日記カテゴリができてしまう
■原因
webapp/lib/db/diary.php 以下の処理でslave(main_reader) のDBを参照しているため。
function db_diary_category_delete_c_diary_category_diary
156 $is_diary = (bool)db_get_one($sql, array(intval($c_diary_category_id)));
function db_diary_category_list4c_member_id
17 $result = db_get_all($sql, array(intval($c_member_id)));
master/slave間で遅延が発生していた場合、この処理で取得する日記カテゴリが古い情報となってしまうため、結果的に概要にあるような不具合を引き起こしてしまう。
■修正内容
原因に出ている処理をmaster のDBを参照するように修正
■関連情報
Change History (12)
comment:1 Changed 12 years ago by
Milestone: | → OpenPNE2.14.8 |
---|
comment:2 Changed 12 years ago by
comment:3 Changed 12 years ago by
Keywords: | 確認中 added |
---|---|
Owner: | changed from nobody to ykimura |
comment:4 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
テストを行ないました。
tcコマンドのnetemを使用して600msのパケット遅延をシミュレートした環境下でテストを実施し、不具合が起きていないことを確認しました。
comment:5 Changed 12 years ago by
Keywords: | 確認中 removed |
---|
comment:6 Changed 12 years ago by
Keywords: | 確認中 added |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
コードチェックが未完のため、reopenします。
comment:7 Changed 12 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
db_diary_category_list4c_member_id() が修正されていません。
comment:8 Changed 12 years ago by
Owner: | changed from ykimura to imamura623 |
---|---|
Status: | reopened → new |
comment:9 Changed 12 years ago by
comment:10 Changed 12 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:11 Changed 12 years ago by
Keywords: | 確認中(レビュー済み) added; 確認中 removed |
---|
OKです。
純粋な参照系ページで db_diary_category_list4c_member_id() を呼ぶ場合は main_reader を使ったほうがよいですが、変更点が増えてしまうので今回はこれで問題なしとします。
comment:12 Changed 12 years ago by
Keywords: | 確認中(レビュー済み) removed |
---|---|
Resolution: | → fixed |
Status: | new → closed |
動作確認しました。カテゴリが重複しないことを確認しました。
Note: See
TracTickets for help on using
tickets.
以下のリビジョンでコミットしました。