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

複数台構成で稼働時に、データ更新後のリダイレクトでデータが反映されない場合がある #4985

Open
okazy opened this issue Mar 24, 2021 · 0 comments
Labels
Milestone

Comments

@okazy
Copy link
Contributor

okazy commented Mar 24, 2021

概要(Overview)

Issue 検討会より

例えば編集画面で保存すると、最終的にリダイレクトが走る場合に発生する。
index.php の77行目でレスポンスが返り、78行目で DB に commit される前にアクセスがあるものと思われる。

ec-cube/index.php

Lines 75 to 78 in 3e492f7

$kernel = new Kernel($env, $debug);
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

apache では発生しにくいが、 nginx だと発生する場合がある。

terminate での commit

terminate で commit しているのは、プラグインなのでカスタマイズ時にも一番最後で commit したいから。
handle で commit した場合にはそちらの処理で正常にロールバックできない可能性あり。

期待する内容(Expect) or 要望 (Requirement)

ロードバランサで解決できるかも?

L7のロードバランサでバランシングすると、同じクライアントの場合は同じサーバに割り当てられ、問題が解決できるかもしれない。

再現手順(Procedure)

サーバ複数台構成、L4のロードバランサで稼働している場合に発生。

環境 (environment)

  • EC-CUBE: 4.0.x

関連情報 (Ref)

@okazy okazy changed the title KernelEvents::TERMINATE で DB の更新をしている場合に、即次回アクセスでデータが反映されない場合がある $kernel->terminate(); で DB の更新をしている場合に、即次回アクセスでデータが反映されない場合がある Mar 24, 2021
@okazy okazy added this to the 4.0.x milestone Mar 24, 2021
@okazy okazy added the bug label Mar 24, 2021
@okazy okazy changed the title $kernel->terminate(); で DB の更新をしている場合に、即次回アクセスでデータが反映されない場合がある 複数台構成で稼働時に、データ更新後即次回アクセスでデータが反映されない場合がある Mar 24, 2021
@okazy okazy changed the title 複数台構成で稼働時に、データ更新後即次回アクセスでデータが反映されない場合がある 複数台構成で稼働時に、データ更新後のリダイレクトでデータが反映されない場合がある Mar 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant