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

Opened 12 years ago

Closed 12 years ago

#1842 closed defect (worksforme)

負荷が高い場合とか同時挿入が起きた時に、c_memberの値が不正になる

Reported by: kiwa Owned by: ebihara
Priority: minor Milestone:
Component: その他 Version: 2.8.x & 2.10.x & 2.11.x
Keywords: 再現待ち Cc:

Description

http://sns.openpne.jp/?m=pc&a=page_fh_diary&target_c_diary_id=15196 より転記

むむむ

気になってソースを読んでみたんだけど
class OpenPNE_DB_Writer

insert

$res = $this->db->autoExecute($table, $fields_values, DB_AUTOQUERY_INSERT);

return $this->insertId($id);

insertIdは
return $this->db->getOne('SELECT LAST_INSERT_ID()');
なんて事をしているワケで(mysqlの場合だけ)

http://dev.mysql.com/doc/refman/5.1/ja/concurrent-inserts...

この辺とか見てると、”途中に削除されたデータがある場合”とない場合で、INSERTの挙動が違うようなんですよね

”退会した人が居る場合に起きる”と質問コミュに書いてあったけど、退会=c_memberにdeleteされて穴が空く=この辺の挙動に引っかかり負荷が高い場合とか同時挿入が起きた時に、値が不正になる

のではないだろうか

Change History (3)

comment:1 Changed 12 years ago by kiwa

Version: 2.8.x & 2.10.x & 2.11.x

comment:2 Changed 12 years ago by kiwa

Owner: changed from nobody to ebihara

開発チームに判断をお願いしたいです

comment:3 Changed 12 years ago by ebihara

Resolution: worksforme
Status: newclosed

恐らくこの現象は起こりえません。また、c_member_idの値が返ってこない問題はOpenPNE_DBではなく別のところに原因があると思います(恐らくもっとアプリに近い場所)。

いったんチケットをクローズします。もしこの現象が起きた場合はリオープンして対処しましょう。

Note: See TracTickets for help on using tickets.