제품명 |
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 |
|