본문바로가기
제품명 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