스프링 테스트에서 embedded redis 사용할 때 뜨는 로그..

23.12.20 02:20 작성 조회수 190

0

[lettuce-nioEventLoop-6-1] INFO io.lettuce.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394) SocketChannelImpl.java:394 at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426) SocketChannelImpl.java:426 at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:254) PooledByteBuf.java:254 at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) AbstractByteBuf.java:1132 at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) NioSocketChannel.java:357 at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) AbstractNioByteChannel.java:151 at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) NioEventLoop.java:788 at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) NioEventLoop.java:724 at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) NioEventLoop.java:650 at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) NioEventLoop.java:562 at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) SingleThreadEventExecutor.java:997 at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ThreadExecutorMap.java:74 at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) FastThreadLocalRunnable.java:30 at java.base/java.lang.Thread.run(Thread.java:840)

 

스프링 테스트에서 embedded redis를 사용해 테스트하던 중에 이런 로그가 뜨네요...

에러는 아닌 것 같은데 정확히 뭘 하라는 건지 모르겠어요 ㅠㅠ

저 문구를 어떻게 하면 없앨 수 있을까요?....

 

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.21

안녕하세요, 인프런 AI 인턴입니다.
kangmj815님 질문하신 내용에 대해 답변드리겠습니다.

스프링 테스트 중에 발생한 로그는 lettuce-core 라이브러리의 io.lettuce.core.protocol.CommandHandler가 예상치 못한 예외(java.net.SocketException: Connection reset)를 감지했음을 나타냅니다. 이 예외는 레디스 서버와의 네트워크 연결이 끊어졌을 때 발생할 수 있는데, 임베디드 레디스를 사용할 때 종종 볼 수 있는 현상입니다.

이 로그 메시지가 에러는 아니지만, 테스트 도중 연결 문제가 발생한 것으로 보입니다. 로그를 없애는 방법으로는 몇 가지가 있습니다:

  1. 임베디드 레디스 인스턴스가 제대로 시작되었는지 확인하십시오. 시간이 부족해서 연결이 끊길 수 있습니다. 인스턴스가 완전히 준비될 때까지 충분한 시간을 주는 것을 고려해보세요.

  2. 로깅 레벨을 조절하여 특정 클래스나 패키지의 로그 출력 레벨을 변경할 수 있습니다. 로그 발생 클래스에 대한 로깅 레벨을 ERROR로 설정하면 INFO 레벨 이하의 로그는 출력되지 않을 것입니다. 예를 들어, application.properties 또는 application.yml에서 다음 설정을 추가합니다:

   logging.level.io.lettuce.core.protocol=ERROR

또는 YAML 형식으로는:

   logging:
     level:
       io.lettuce.core.protocol: ERROR
  1. 레디스 커넥션에 관한 문제가 지속된다면, 연결 설정에 문제가 없는지 확인하거나, 임베디드 레디스가 아닌 실제 레디스 서버로 테스트를 해보는 것도 한 방법입니다.

  2. 테스트 환경의 안정성을 위해서 필요하다면 레디스 클라이언트 라이브러리를 lettuce에서 jedis로 변경해보세요. Spring Boot는 spring-boot-starter-data-redislettuce를 기본으로 사용하지만, 필요에 따라 jedis로 변경할 수 있습니다.

위 방법 중 적합한 것을 시도해보시고, 로그 메시지가 계속 나타나거나 다른 문제가 발생한다면 추가적인 진단이 필요할 수 있습니다. 예를 들어, 테스트 코드에서 레디스 서버에 요청을 보내는 시점, 서버가 준비되어 있지 않을 경우 연결이 끊기면서 이러한 로그가 기록될 수 있습니다.