【原因】
intra-mart Accel Platform の不具合です。
今後のアップデートにて改修予定です。
以下、現象の詳細や回避方法を示します。
●現象
更新処理と参照処理が同時に実行されると、古い情報のキャッシュが残ってしまう場合があります。
(キャッシュを組み込んだ情報が、情報の取得方法次第で整合性が保てなくなります)
例:認可設定を変更する場合
認可設定画面にて、あるリソースを「許可」から「不許可」に変更したが、 本事象が発生し、認可関連のキャッシュに古い情報が残ってしまう。
その結果、キャッシュの有効期限が切れるまで、該当リソースが「許可」された状態になります。
●条件
参照時にキャッシュが無い場合にキャッシュを構築する実装になっている箇所では以下の動作を行うと古い情報がキャッシュされます
[スレッドA] トランザクションを張る
[スレッドA] エンティティを更新してキャッシュをクリアする
[スレッドB] 参照系処理を実行し、キャッシュが作成される
[スレッドA] コミットする
●原因
キャッシュをクリアするタイミングが間違っています。
●回避策
例:認可設定を変更する場合
1. メンテナンス期間を設け、ユーザのアクセスがない状態にする。
2. 認可設定変更する。
3. キャッシュクリアを手動で行う。
-- 対象 ------------------------------------------------------------------------
iAP/Accel Platform/全アップデート
--------------------------------------------------------------------------------
FAQID:17
アクセスが集中している際に認可設定を更新すると、認可情報が即時反映されない場合がありますが、何故でしょうか?