Ticket #799 (closed 改善提案: 修正済)

Opened 10 years ago

Last modified 10 years ago

SC_Helper_DB#sfCategory_Count をトランザクションブロックで実行する

Reported by: Seasoft Owned by: AMUAMU
Priority: Milestone: EC-CUBE2.11.0
Component: 管理画面 Version: コミュニティ (eccube-comu)
Keywords: Cc:
修正済み:

Description

何らかの原因で SC_Helper_DB#sfCategory_Count が途中中断すると、dtb_category_count と dtb_category_total_count が0レコードとなる。

そうなると、カテゴリブロックや件数表示が正常に動作しなくなる。

これを回避するため、本処理はトランザクションブロック内で行なうのが望ましいと考える。ただし、商品登録などと連鎖して呼び出される処理なので、呼び出し元も含めた大きなトランザクションブロックの方が望ましいようにも感じる。

Change History

comment:1 follow-up: ↓ 2 Changed 10 years ago by nanasess

下記のようなフローで良さげでしょうか?

  1. 引数の $objQuery を参照渡しに変更
  2. SC_Query::inTransaction() でトランザクションが開始されているかチェック
  3. 2 でトランザクションが開始されていなければ, トランザクションを開始
  4. 2 でトランザクションが開始されていなければ, トランザクションをコミット

comment:2 in reply to: ↑ 1 Changed 10 years ago by Seasoft

  1. 引数の $objQuery を参照渡しに変更

あまり $objQuery を引きずり回したくないのですが、SC_Query って、既存インスタンスを取得とかやっていなかったでしたっけ? (新しくなった SC_Query 用の改訂履歴を見ていたときには、明示的にそれを行なうメソッドがありそうな感じも。)

comment:3 Changed 10 years ago by AMUAMU

  • Owner changed from somebody to AMUAMU
  • Status changed from new to assigned
  • Milestone changed from EC-CUBE2.5.0beta to EC-CUBE2.5.0

r19691 にて改修。

comment:4 Changed 10 years ago by AMUAMU

  • Status changed from assigned to closed
  • Resolution set to 修正済
Note: See TracTickets for help on using tickets.