본문 바로가기

장애&오류&예외

[Jboss-Bug] Jasper should recompile JSP files whose datestamps change in either direction (jboss7/wildfly14 lower version)

현재, 운영중인 플랫폼 대상들 중 모든 버그들에 대한 수용 패치를 진행한다는 것에는 많은 무리수가 존재할 것이다.

이로인해 수 많은 웹과 서버들로 부터 작은오류와 큰 오류들이 혼재되어 수많은 이슈를 발생시키는 경우가 많다.

이번에 올리는 오류 역시 그들 중 하나이며, 마이너한 오류이지만 서비스 운영하는 회사의 입장에서는 큰 오류이기에 올린다.

오류가 확인된 것은 운영중인 플랫폼 자원을 배포 후, 원복이 필요하여 자원 원복한 이후에 확인이 되었다.

자원을 아무리 원복하여도 서비스 확인하는 과정에서 원복이 이루어지 않는 것을 알게되었고 원인 규명 과정에서 WAS 서버에서 발생하는 것이 아닌가에 대한 초점이 맞추어지게되었다.

결과적으로 Jboss 로직적인 이슈가 있었던 사항이며, 특정버전 미만의 WAS에서 해당 현상이 발생되는 것에 대해 인지하게되었다. 비정상적인 기동이 이루어질 시, JSP를 컴파일하지 못하는 경우이며 수동으로 jboss was instance 영역의 ./tmp 영역 디렉터리를 초기화하는 경우가 발생할 수 도 있다.

 

#- 이슈발생/현상/원인

타이틀 TASK 프로세스(정상) 프로세스(비정상)
이슈발생


WAS종료 자원 원복 후, jboss shutdown 수행 시
jboss 내 ./tmp 디렉터리 초기화
자원원복 후, jboss process kill 종료 시
jboss 내 ./tmp 디렉터리 내 파일유지

형상배포 업로드된 자원의 시간으로 변경(현재 시간/갱신) 업로드되기 이전의 자원 그대로 유지(과거 시간/유지)
jboss버전

#wildfly14 & eap7
- jsp 파일의 시간이 다르면 무조건 컴파일 수행

#wildfly9 & eap6
- jsp 자원의 시간이 현재 cache된 ./tmp내 파일 보다 과거일 시, 컴파일 대상에서 제외(jsp가 아닌 class 형태의 소스는 정상로딩)

현상 정기 배포 pkg 원복 후, 일부 인스턴스 미 원복 현상 확인
원인 kill명령어를 통해 WAS 프로세스 중지 시,
./tmp 디렉터리 내 컴파일 된 class 파일의 원본jsp 파일보다
배포된 형상의 jsp 파일의 날짜가 과거 시점에 생성된 파일일 경우 컴파일 미수행.

 

#- 해결방안

비정상적으로 WAS 프로세스를 다운하였을 경우, jsp 파일 현행화를 위한 WAS인스턴스 영역 /tmp디렉터리를 자체 초기화가 이루어지도록 기동스크립트를 조정하는 방법과 수동으로 초기화를 해주는 방법을 선택하면 되겠다.

 

#- References

(jboss)Problem_with_compilation_of_dynamically_generated_JSPs_on_JBoss_WildFly

(apache_forum_bugzilla)jboss_jasper_bug_33453

(jboss)Jasper_recompile_issue