제품명 | InnoRules | 버그번호 | BIR16R003 |
---|---|---|---|
제목 | L2 Cache Overflow | ||
현상 | 서브 룰을 호출해 오는 과정에서 각 룰에서 사용되는 항목, 룰의 개수의 합이 일정 개수(512)를 넘을 때, 경우에 따라서 룰 엔진이 잘못된 결과를 출력하거나 ClassCastException 발생 등 예상하지 못한 동작을 할 수도 있음 | ||
분석결과 | 항목 값, 룰 캐시 조회를 빠르게 해 주는 L2 캐시에서, L2 캐시의 크기를 초과하여 항목, 룰이 사용될 경우에 대한 일부 처리가 누락 발생 시나리오(괄호 안은 룰이 사용하는 항목 또는 서브 룰의 개수) A(500) - B(100) - C(10) - D(100) - E(10) O A룰은 L2 캐시 사용(512 미만) O B룰은 L2 캐시 미사용(500 + 100 > 512) O C룰은 L2 캐시 사용(500 + 10 <= 512). B는 이미 수행이 끝났으므로 관계 없음 O D룰은 L2 캐시 미사용(500 + 100 > 512 ) O 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 |