본문바로가기

News

製品名 InnoRules バグ番号 BIR16R003
タイトル L2 Cache Overflow
症状 サブルールを呼び出してくる過程中、各ルールで使用される項目、ルール数の合計が一定数(512)を超える時、場合によってルールエンジンが誤った結果を出力したり、ClassCastExceptionの発生など予想出来なかった動作をする可能性がある。
分析結果
項目値、ルールキャッシュ照会を迅速にしてくれるL2キャッシュで、L2キャッシュのサイズを超えて、項目、ルールが使用される場合に対するいくつかの処理が漏れている。

発生シナリオ (括弧内はルールが使用する項目またはサブルールの数)
A(500) - B(100)
- C(10)
- D(100) - E(10)

- AルールはL2キャッシュ使用(512未満)
- BルールはL2キャッシュ未使用(500 + 100 > 512)
- CルールはL2キャッシュ使用(500 + 10 <= 512). Bはすでに実行が終わったため、関係ない。
- DルールはL2キャッシュ未使用(500 + 100 > 512 )
- EルールはL2キャッシュ未使用(500 + 10 <= 512). DはL2キャッシュを使用しないため、含まない。

Eルール(上位ルールがL2キャッシュ未使用)実行後、問題発生

回避方法 無い
影響バージョン innorulesj.jar 7.0.0.0 ~7.0.0.14 解決バージョン innorulesj.jar 7.0.0.15
受付日 2016-03-04 終結日 2016-03-04