Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSV出力時にメモリを使い切ってしまう問題を修正 #4815

Merged
merged 4 commits into from
Jan 6, 2021

Conversation

chihiro-adachi
Copy link
Contributor

@chihiro-adachi chihiro-adachi commented Dec 23, 2020

概要(Overview・Refs Issue)

#4775 の対応
商品・カテゴリ・受注・会員CSVを対応しました。

方針(Policy)

trigger_errorが発生するメソッドを利用しないように修正

実装に関する補足(Appendix)

EntityManager::clearメソッドを利用した場合、ManyToOneの出力(性別など)が欠落する問題が発生したため、UnitOfWork::detachを利用するようにしています。※EntityManager::detachと挙動は同じ

01d6b15

テスト(Test)

  • memory_limit 128MBで商品点数 15,262件/15,262件を出力できることを確認

相談(Discussion)

マイナーバージョン互換性保持のための制限事項チェックリスト

  • 既存機能の仕様変更
  • フックポイントの呼び出しタイミングの変更
  • フックポイントのパラメータの削除・データ型の変更
  • twigファイルに渡しているパラメータの削除・データ型の変更
  • Serviceクラスの公開関数の、引数の削除・データ型の変更
  • 入出力ファイル(CSVなど)のフォーマット変更

レビュワー確認項目

  • 動作確認
  • コードレビュー
  • E2E/Unit テスト確認(テストの追加・変更が必要かどうか)
  • 互換性が保持されているか
  • セキュリティ上の問題がないか

@chihiro-adachi chihiro-adachi changed the title [WIP] CSV出力時にメモリを使い切ってしまう問題を修正 CSV出力時にメモリを使い切ってしまう問題を修正 Dec 23, 2020
@nanasess
Copy link
Contributor

nanasess commented Jan 4, 2021

EntityManager::clearメソッドを利用した場合、ManyToOneの出力(性別など)が欠落する問題が発生したため、UnitOfWork::detachを利用するようにしています。※EntityManager::detachと挙動は同じ

detach は deprecated になっているので、 clear で何とかなりませんかね。。。

@chihiro-adachi
Copy link
Contributor Author

chihiro-adachi commented Jan 5, 2021

@nanasess
clear(entity_name)が使えればよいのですが、そちらもdeprecatedでtrigger_errorが発生します。

もしくは、以下のようにページングしてclear()するのが適切かと思いましたが、受注と受注明細のようなクエリだと件数の制御がうまくいかず、ちょっと手詰まりな感じです。
http://enterprisegeeks.hatenablog.com/entry/2014/11/24/110723

いつかは修正しないといけない問題ではあるんですが、4.0.xではぎりぎり許容範囲かなあと。。

何かよいやり方があればアドバイスいただけるとありがたいです。

@chihiro-adachi
Copy link
Contributor Author

@nanasess
ページングしてやればよさげでした。
以下のように修正してみましたがどうでしょうか。
0da7c07

本PRの適用前/後でCSVの差分を比較して差異がないことも確認済。

@nanasess
Copy link
Contributor

nanasess commented Jan 6, 2021

@chihiro-adachi 良いと思います。ありがとうございます!

@kiy0taka kiy0taka merged commit 1ded4aa into EC-CUBE:4.0 Jan 6, 2021
@chihiro-adachi chihiro-adachi added this to the 4.0.6 milestone Jan 6, 2021
MakoTano pushed a commit to Best-Beer-Japan/ec-cube that referenced this pull request May 4, 2021
MakoTano added a commit to Best-Beer-Japan/ec-cube that referenced this pull request May 4, 2021
…cated

CSV出力時にメモリを使い切ってしまう問題を修正 EC-CUBE#4815
@chihiro-adachi chihiro-adachi deleted the csv-download-remove-deprecated branch May 15, 2021 02:32
@chihiro-adachi chihiro-adachi modified the milestones: 4.0.6, 4.1 Jul 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants