- Spreeで商品管理のオプションタイプを追加するとタイムアウトが発生する様になった
- DBへの負荷が尋常では無く危険な状態
- 調査してみたところオプションタイプを追加するときに全商品のレコードを更新(touch)している処理がある
- touch処理は外しても問題が無さそうなので外した
- 何か意図があって全件touchをしているのかもしれないので管理画面からupdateするときのみtouch処理をskipさせた
- パッチを適用させたのはoption_types_controllerのみ
decorator
- app/controllers/spree/option_types_controller_decorator.rb
Spree::Admin::OptionTypesController.class_eval do
def update
Spree::OptionType.skip_callback(:touch, :after, :touch_all_products)
super
end
end