티스토리 뷰

최신버전의 Spring Boot와 Hibernate버전을 사용하여 Native 컴포넌트를 빌드하면서 알 수 없는 버그를 만났습니다..

 

Hibernate의 Lazy 로딩에 대한 스펙이 변경 되면서 발생한 이슈인데요 현재기준 (6.4.4.Final) 버전에서 발생하고 있습니다.

 

Hibernate가 6.2버전으로 올라가면서 enhancement 설정을 deprecated시키고 항상 byte Laze 코드를 생성하도록 만드는 설정인데요, 해당 설정이 정상적으로 적용이 안되었는지 적용이 충돌이 발생하는 이슈가 있습니다.

 

이때 겪었던 트러블 슈팅을 했던 과정을 간단하게 공유하고자 합니다. (무한 반복의 굴레...)

 

이 사건의 발단은 Spring Boot 버전을 최신버전으로 업데이트하면서 발생했습니다..

 

Spring Boot 버전을 3.2.4로 업데이트를 시도하면서 Hibernate 버전이 자동으로 6.4.4.Final로 업데이트 되었습니다.

 

Hibernate는 6.2버전으로 업데이트 되면서 enhancement를 deprecated시키고 기본설정으로 변경했는데요

[https://hibernate.atlassian.net/browse/HHH-15641]

 

Spring Native는 실시간 Reflection 지원을 위해서는 특정 설정들이 필요합니다. 미리 Reflection을 지원할 Class들의 정보들을 별도로 컴파일해두어야 하는데요, 이런 설정을 위해서 Hibernate의 bytecode enhacement 설정을 통해 설정해야합니다.

 

하지만... 슬프게 앞서 말했던 Hibernate 6.2 버전으로 올라오면서 해당 enhancement 설정들이 Deprecated 되고 기본 설정으로 변경되었습니다. 사실 해당 내용만 봐서는  기본 설정이 활성화 상태기 때문에 안될 이유가 없는데... 내부 코드 이슈로 설정이 적용이 안되면서 enhancement가 안되어 Lazy Proxy가 생성되지 않는 이슈가 발생했습니다.

 

모든 join 필드에서 에러가..

failed to lazily initialize a collection of role: {.......}: could not initialize proxy - no Session] with root cause

 

이런 저런 시도를 하다가 deprecated 되어 있는걸 무시한 채 enhancement를 추가해보았습니다. 설마하는 일말의 기대를 가지고 야심차게 CI/CD 파이프라인에 태웠습니다. 하지만.. ECS의 Task(Pods)는 실행도 못해보고 죽기 시작했습니다... 

 

포기할뻔 포기할 수 없었기 때문에 다시 Github을 열심히 뒤지던 중 [https://github.com/spring-projects/spring-framework/issues/31051] [https://github.com/spring-projects/spring-boot/issues/38898]

이런 Issue들을 찾았고 결국 Hibernate의 업데이트를 기다려야 한다는 슬픈 결론에 도달했습니다.

 

어쩔 수 없이 Hibernate를 6.1.7.Final로 다운그레이드했습니다.. ㅜㅜ 하지만 또 다른 이슈를 만났으니.. Java21을 지원하지 않는 것 이였습니다. Spring Boot 3.2.4 올라오면서 욕심껀 Java21 도입했던 나 자신을 한껏 탓하고 다시 Java 17 버전으로 다운그레이드 했습니다.

 

어렵게 어렵게 Spring Boot 3.2.4로 업그레이드에는 성공했습니다!

 

Spring Boot Native를 사용하는 다른 분들을 위해 이 글을 정리합니다.

 

Hibernate 6.2.0~6.4.4.Final을 사용하는 Spring Boot 버전들은 모두 비슷한 위험이 있으니 6.1.7.FINAL과 Java 17조합을 사용하셔야합니다!! 

 

Spring Native를 적용해 사용하는 모든 분들께 응원을 전하며 글을 마칩니다..!! 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함