SNR#3034 전달 노드 전송 데이터로 인한 수집 노드 시스템 종료 불가 문제 해결
버전: 4.0.2507.0
SNR#3034 전달 노드의 데이터 전송으로 인해 수집 노드 종료가 지연되는 문제 해결
수집 노드 종료 시, 전달 노드(Forwarder)로부터 로그 데이터를 수신하고 있는 상태에서는 시스템 종료가 정상적으로 완료되지 않는 문제가 있었습니다. 종료 단계에서 수신된 데이터를 처리하기 위해 스레드 풀에 작업을 제출하려 했으나, 이미 종료 중인 상태이기 때문에 아래와 같은 RejectedExecutionException 예외가 반복적으로 발생하며 종료가 지연되었습니다.
[2025-06-05 18:24:52,339] ERROR (BaseRpcService) logpresso forwarder base: log multiplexer thread loop error
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@828f529 [Not completed, task = java.util.concurrent.Executors$RunnableAdapter@60c48a2c] rejected from java.util.concurrent.ThreadPoolExecutor@2f356f9[Shutting down, pool size 8, active threads 8, queued tasks 184, completed tasks 0]
at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055)
at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
at com.logpresso.forwarder.base.impl.BaseRpcService$LogMultiplexer._M_run(BaseRpcService.java:536)
at com.logpresso.forwarder.base.impl.BaseRpcService$LogMultiplexer.run(BaseRpcService.java)
이번 릴리스에서는 종료 중에는 더 이상 새로운 작업이 제출되지 않도록 예외 처리를 보완함으로써, 전달 노드로부터 로그를 수신 중이더라도 수집 노드가 정상적으로 종료될 수 있도록 수정했습니다.