製品名 | 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 |