プロジェクト

全般

プロフィール

Bug(バグ) #1510

opDoctrineQuery::calculateQueryCacheHash() が正常に動作しない

Shogo Kawahara13年以上前に追加. 8年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-08-18
期日:
進捗率:

100%

3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

説明

Overview

opDoctrineQuery::calculateQueryCacheHash() が正常に動作しない

Doctrine::getTable(*)->findOneByXAndY(...);
Doctrine::getTable(*)->findOneByYAndZ(...);

とすると2回目の実行で正常な値が返されない

実際の影響箇所は以下が確認されています。

  • コミュニティ副管理者依頼の承認画面

なお、APCの導入されていない環境では、本影響を受けない。

Environment

  • OpenPNE3.6beta2

関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1511: opDoctrineQuery::calculateQueryCacheHash() が正常に動作しない Fixed(完了) 2010-08-18

関係しているリビジョン

リビジョン 90716878 (差分)
Kousuke Ebihara13年以上前に追加

removed opDoctrineQuery::$findQueryCacheKeys support because it may select wrong query cache hash key (fixes #1510)

履歴

#2 Rimpei Ogawa13年以上前に更新

  • 3.6 で発生するかYes にセット

#3 Rimpei Ogawa13年以上前に更新

  • 優先度Urgent(急いで) から High(高め) に変更

#4 Kousuke Ebihara13年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Kousuke Ebihara にセット

#5 Kousuke Ebihara13年以上前に更新

Doctrine_Table::find() のみ特別なクエリキャッシュキーを使うようなコードになっていますが、 Doctrine_Table::find() 側で特別なクエリを発行しない限り、期待通りの挙動を実現するのは不可能です。あらゆるアプローチを検討しましたが、これに関しては Doctrine_Query::calculateQueryCacheHash() よりも高速にキャッシュキーを正しく算出するのは非常に難しいと思います。

この問題の回避のためにパフォーマンス上悪影響を及ぼすかもしれないコードを無理に入れるのではなく、 Doctrine_Table::find() で特別なクエリキャッシュキーを使うのを諦めるのがこのチケットにおいてのもっとも現実的な解決策になると思います。

#6 Kousuke Ebihara13年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 90716878b97e49424b0eb6a5fa69161771e06b2c で適用されました。

#7 Shogo Kawahara13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#8 Mutsumi Imamura12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

#9 kaoru n8年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

他の形式にエクスポート: Atom PDF