プロジェクト

全般

プロフィール

Bug(バグ) #3445

Youichi Kimura さんが約11年前に更新

h3. Overview (現象) 

 Doctrine_Record::free() メソッドには https://gist.github.com/upsilon/6896385 のような Doctrine のバグと思わしき現象が存在している。 
 #927 でのメモリリーク改善のために行った commit:d6956cde880be65aefc802e01b070bb9d054145f の修正は CommunityTableTest.php などのテストコードでこの現象を引き起こしており、例えば下記のようなコードを実行するとエラーが発生する。 

 <pre><code class="php"> 
 $communityMember1 = Doctrine_Core::getTable('CommunityMember') 
   ->findOneByCommunityIdAndMemberId(1, 1); 

 Doctrine_Core::getTable('CommunityMember')->isMember(1, 1); 

 print $communityMember1->community_id; // エラー 
 </code></pre> などのテストコードでこの現象を引き起こしており、CommunityMember オブジェクトの操作順次第ではテストコード以外でも同様の現象が発生する可能性がある。 

 h3. Way to fix (修正内容) 

 この問題を根本的に解決するためには Doctrine 自体に手を加える必要があるため、ここでは不具合の回避のための修正を行う。具体的には #927 で行ったメモリリーク改善の効果を落とさないように CommunityMember オブジェクトに対する free() メソッドの呼び出しを最小限に抑えるための修正を施す。

戻る