ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#4455 closed defect (fixed)

Slave環境にて外部ブログが重複して取得される場合がある

Reported by: kiwpon Owned by: nagasawa
Priority: major Milestone: OpenPNE2.14.9
Component: 指定しない Version: 2.14.x
Keywords: Cc:

Description (last modified by nagasawa)

■概要

Slave環境にて、外部ブログが重複して取得される場合がある

■原因

"webapp/lib/db/rss.php"

101 function db_rss_is_duplicated_rss_cache($c_member_id, $date, $link)
102 {
103     $sql = 'SELECT c_rss_cache_id FROM c_rss_cache' .
104             ' WHERE c_member_id = ? AND r_datetime = ? AND link = ?';
105     $params = array(intval($c_member_id), $date, $link);
106     return (bool)db_get_one($sql, $params);
107 }

既に登録されているブログかどうかを確認する処理でslave側を参照しているため、遅延が発生していた場合に判定が正しく行われず既に登録したブログが取得されてしまう。

■修正内容

db_get_one()の第3引数にmainを指定しマスターを参照するように修正。

■関連情報

Change History (9)

comment:1 Changed 8 years ago by kiwpon

Milestone: OpenPNE2.14.9
Priority: minormajor

comment:2 Changed 8 years ago by nagasawa

Owner: changed from nobody to nagasawa
Status: newassigned

comment:3 Changed 8 years ago by nagasawa

Description: modified (diff)

comment:4 Changed 8 years ago by nagasawa

Keywords: 確認中 added

r13795 にて修正しました。

通常フローからのテストは困難であったため、 db_rss_is_duplicated_rss_cache() を使用している同期スクリプトでテストしました。

修正前の挙動

  1. config.php のスレーブを無効化
  2. 通常フローから外部ブログを設定
  3. マスターのデータをダンプし、スレーブへ流し込み
  4. config.php のスレーブを有効化
  5. php bin/tool_rss_cache.php を実行(xxxはRSSの記事数)
     insert: xxx records
    
  6. 再度 php bin/tool_rss_cache.php を実行(再度挿入されてしまう)
    insert: xxx records
    

修正後の挙動

  1. config.php のスレーブを無効化
  2. 通常フローから外部ブログを設定
  3. マスターのデータをダンプし、スレーブへ流し込み
  4. config.php のスレーブを有効化
  5. php bin/tool_rss_cache.php を実行(xxxはRSSの記事数)
     insert: xxx records
    
  6. 再度 php bin/tool_rss_cache.php を実行(再挿入されない)
     insert: 0 records
    

comment:5 Changed 8 years ago by nagasawa

r13797 にて stable-2.14.x へマージしました。

comment:6 Changed 8 years ago by imamura623

Version: 2.14.x

comment:7 Changed 8 years ago by imamura623

Keywords: 確認中(テスト済み) added; 確認中 removed

mysql multiを利用しレプリケーション環境を作成し、正常にBlogの取得、編集、解除が出来ることを確認しました。 問題ありません。

comment:8 Changed 8 years ago by urabe

Keywords: 確認中(テスト済み) removed
Resolution: fixed
Status: assignedclosed

コード上は問題がありませんでした。

修正前の挙動 と 修正後の挙動 の 5 6 の間でDBのレプリケーションはされていないとのことでテスト内容にも問題ありません。

comment:9 in reply to:  8 Changed 8 years ago by urabe

Replying to urabe:

修正前の挙動 と 修正後の挙動 の 5 6 の間でDBのレプリケーションはされていないとのことでテスト内容にも問題ありません。

補足:実装した長澤さんに直接確認した上でのコメントです

Note: See TracTickets for help on using tickets.