Ticket #1176 (closed 改善提案: 修正済)
商品登録CSVにて、入力エラーがあった場合に無駄にシーケンス番号が消費される
Reported by: | shutta | Owned by: | somebody |
---|---|---|---|
Priority: | 低 | Milestone: | EC-CUBE2.11.0 |
Component: | 管理画面 | Version: | 2.11.0 β2 |
Keywords: | 要仕様検討 | Cc: | |
修正済み: | no |
Description
現在は、トランザクションの中で、1行毎に、
入力チェック -> DB登録(挿入or更新)
を行なっており、入力チェックでエラーになった場合にbreakし、トランザクションをrollbackしている。
そのため、シーケンス値が無駄に消費されてしまう。(シーケンス値はロールバックしても戻らないため)
全行入力チェックを行った後に、DB更新をするように処理を変更した方が良い。
Change History
comment:1 Changed 12 years ago by shutta
- Owner changed from somebody to shutta
- Status changed from new to assigned
comment:3 Changed 12 years ago by shutta
- Status changed from assigned to closed
- Resolution set to 修正済
r20731 にて修正。
comment:4 follow-up: ↓ 7 Changed 12 years ago by kotani
- Status changed from closed to reopened
- Resolution 修正済 deleted
shutta様
株式会社ロックオン小谷です。お世話になっております。
r20731 で、PHP4でサポートされていない"clone"が使用されているため、PHP4環境でシンタックスエラーがが発生しています。
Parse error: parse error, unexpected T_VARIABLE in /var/www/html/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php on line 237
現在弊社で実施中のシステム検証に支障がございますため、
大変恐縮ではございますが、r20731 のコミットを一旦キャンセルさせて頂きました。
もし可能でしたら、PHP4にも対応できた形でご修正頂けますと幸いです。
comment:5 Changed 12 years ago by AMUAMU
どのみちclone以外を使っても、メモリ上でデータを格納し再利用する内容だったので、メモリオーバーする問題もあったので、当方も直そうかと思っていました。
どちらにしろ本件自体も問題視するかどうかも検討が必要かと思います。 ※たぶんPostgreSQLの処理系に依存した問題ですよね?
問題視するのであれば、チェックのループを回した後、ファイルポインタを戻して、再度登録する処理をする方針で作り直すのが妥当かと思います。
comment:7 in reply to: ↑ 4 ; follow-up: ↓ 12 Changed 12 years ago by shutta
kotani への返信
r20731 で、PHP4でサポートされていない"clone"が使用されているため、PHP4環境でシンタックスエラーがが発生しています。
Parse error: parse error, unexpected T_VARIABLE in /var/www/html/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php on line 237現在弊社で実施中のシステム検証に支障がございますため、
大変恐縮ではございますが、r20731 のコミットを一旦キャンセルさせて頂きました。
もし可能でしたら、PHP4にも対応できた形でご修正頂けますと幸いです。
思慮不足ですみません。
PHP4にも対応する形で再修正しました。(r20740)
AMUAMU への返信
どのみちclone以外を使っても、メモリ上でデータを格納し再利用する内容だったので、メモリオーバーする問題もあったので、当方も直そうかと思っていました。
どちらにしろ本件自体も問題視するかどうかも検討が必要かと思います。
軽微な問題(問題とも言えないか)と思いますが、意図せずシーケンス番号が飛んでしまうのが気になるので修正を試みた次第です。
また、入力エラー時に途中まで登録したデータのROLLBACKする負荷を減らすことも目的としております。
※たぶんPostgreSQLの処理系に依存した問題ですよね?
#780 にて、本バージョンから、auto_increment を利用しない実装に変わっているようですが、MySQL(+MDB2)でのシーケンスは、トランザクションセーフになっていて問題ないんですかね。
(検証しようとしたのですが、現在、MySQLで新規新ストールできませんでした。)
問題視するのであれば、チェックのループを回した後、ファイルポインタを戻して、再度登録する処理をする方針で作り直すのが妥当かと思います。
取り急ぎ、ご提案の通りに、もとの実装をなるべく変えずに、全行チェック後にファイルポインターを戻し、登録処理が走るように修正し直しました。
また、カテゴリー登録CSVの方も同様な状態だと思いますが、本チケットと同じadhocな修正で良ければ、同様な変更を施しておこうかと思いますが、どうでしょうか?
カテゴリーだとカテゴリーIDが関係しますので、少しは気になるかと思います。
comment:8 Changed 12 years ago by kotani
- Owner changed from shutta to kotani
- 修正済み unset
- Status changed from reopened to new
確認します
comment:11 Changed 11 years ago by h_yoshimoto
- Milestone changed from EC-CUBE2.12.2 to EC-CUBE 2.12.3
comment:12 in reply to: ↑ 7 Changed 10 years ago by kim
- Status changed from new to closed
- Resolution set to 修正済
- Milestone changed from EC-CUBE2.12.3 to EC-CUBE2.11.0
shutta様長期に渡りチケットが対応できておらず申し訳ありません。 本件については、2.11.0をもって完了しているものとさせて頂きます。
shutta への返信
また、カテゴリー登録CSVの方も同様な状態だと思いますが、本チケットと同じadhocな修正で良ければ、同様な変更を施しておこうかと思いますが、どうでしょうか?
カテゴリーだとカテゴリーIDが関係しますので、少しは気になるかと思います。
こちらについては、2.12.2でも、同様の問題が発生していれば、 お手数ですが、2.12.4以降のマイルストーンでチケットを別途ご登録いただけますと幸いです。