이 문제는 이벤트 루프가 제대로 등록되지 않아서 발생한 부분이었습니다.
do {
connectChannelFuture = this.clientBootstrap.connect(addr);
logger.debug("connect Channel Future | isRegistered() : {} | port : {}", connectChannelFuture.channel().isRegistered() , this.getPort() );
try {
new Thread().sleep(100);
logger.info("wating 100 ms");
}catch(Exception e ) {
logger.error("wating ChannelFuture setting error | Exception Log : {} " , LogHelper.getPrintStackTrace(e));
}
if( !connectChannelFuture.channel().isRegistered() ) {
try {
connectChannelFuture.channel().close();
logger.info(" not registered channel 닫음");
}catch (Exception e ) {
logger.error(" not registered channel 닫는중 오류. / Exception Log : {}" , LogHelper.getPrintStackTrace(e) );
}
// isRegistered가 false라면
// ChannelEventLoop가 등록 안된상태
// 이벤트루프가 등록 안된상태에서 접속이 종료되면 접속 정보에 대한 재접속 동작이 실행되지 않음.
this.clientBootstrap = nettyBootstrapFactory.createBootstrap();
logger.debug("connectChannelFuture | clientBootstrap.connect(addr)");
try {
new Thread().sleep(100);
logger.info("wating 100 ms");
} catch(Exception e ) {
logger.error("wating ChannelFuture setting error | Exception Log : {} " , LogHelper.getPrintStackTrace(e));
}
}else {
logger.debug("connect Channel Future | isRegistered() : {} | port : {}", connectChannelFuture.channel().isRegistered() , this.getPort() );
break;
}
} while( !connectChannelFuture.channel().isRegistered() );
무한 반복하게 변경해서 해결했습니다.