본문 바로가기
spring_boot/Error

[Spring boot Error] The web application [ROOT] appears to have started a thread named [HikariPool-1 housekeeper] but has failed to stop it

by 잡다한 개발자 정모씨 2024. 5. 7.
2024-05-07T15:16:24.111+09:00  WARN 35080 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [HikariPool-1 housekeeper] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@17.0.9/jdk.internal.misc.Unsafe.park(Native Method)
 java.base@17.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 java.base@17.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 java.base@17.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
 java.base@17.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 java.base@17.0.9/java.lang.Thread.run(Thread.java:842)

프로젝트를 개발하여 프론트와 통신하던 중에 잘하고 있다가 갑자기 위와 같은 애러가 표기되었다.

직역을 하게되면

2024-05-07T15:16:24.111+09:00 WARN 35080 --- [ main] o.a.c.loader.WebappClassLoaderBase : 웹 애플리케이션 [ROOT]가 [HikariPool-1 housekeeper]라는 스레드를 시작한 것 같지만 중지하지 못했습니다. 이로 인해 메모리 누수가 발생할 가능성이 매우 높습니다. 스레드의 스택 추적을 확인하세요:
 java.base@17.0.9/jdk.internal.misc.Unsafe.park(네이티브 메서드)
 java.base@17.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 java.base@17.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 java.base@17.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
 java.base@17.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 java.base@17.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 java.base@17.0.9/java.lang.Thread.run(Thread.java:842)

Translated with www.DeepL.com/Translator (free version)

이렇게 된다. 이때 아래와 같이 직역이 되는데.

웹 애플리케이션 [ROOT]가 [HikariPool-1 housekeeper]라는 스레드를 시작한 것 같지만 중지하지 못했습니다. 이로 인해 메모리 누수가 발생할 가능성이 매우 높습니다. 스레드의 스택 추적을 확인하세요:

HikariPool-1가 우선은 구현체인데 자세히 모르기 때문에 다음시간에 자세히 알아보는 것으로 하자.. 쨋든 본문으로 와서 

https://stackoverflow.com/questions/41836059/the-web-application-appears-to-have-started-a-thread-named-hikaripool-1-houseke

 

The web application appears to have started a thread named [HikariPool-1 housekeeper] but has failed to stop it

I am trying use HikariCP JNDI DataSource Factory within Tomcat 8.5 but when it shutdown I'm getting these warning: o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to ...

stackoverflow.com

여기서 나의 경우와 비슷한 것 같아서 찾아봤는데 HikariPool의 구성에 문제가 있는 것이 아닌 Tomcat에 문제가 있거나 Tomcat 빌드 중에 에러가 발생하는 경우라는 것을 알아 냈다. 그래서 코드를 다시 찾아본 결과 Entity의 joinColumn에 @Column 어노테이션을 적용해놓아 에러가 난 것 이였다..

 

즉 이 오류가 나온다면, 내부 로직에 문제가 있거나 스스로를 의심해야 된다

 

라고 이해했다. 다음에 더 다양한 에러가 나온다면 들고오겠습니다,, 이번글은 전문성이 너무 없어보여서 다음 HikariPool 파해치기로 찾아뵙겠습니다,,