OpenSource/JPA

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.] [n/a]] with root cause

태하팍 2024. 9. 26. 15:59
반응형

CBT에 배포를 했는데 아래와 같은 오류가 발생하였다.

오류 내용

SQLState: 08S01

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server."}
{"service": "cruise-admin-backend","timestamp": "2024-09-25T15:54:57.068+09:00",
"level": "ERROR","log": "Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception 
[Request processing failed: org.springframework.dao.DataAccessResourceFailureException: 
Unable to acquire JDBC Connection [Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. 
The driver has not received any packets from the server.] [n/a]] with root cause"}
java.net.SocketTimeoutException: Read timed out
	at java.base/sun.nio.ch.NioSocketImpl.timedRead(Unknown Source)
	at java.base/sun.nio.ch.NioSocketImpl.implRead(Unknown Source)
	at java.base/sun.nio.ch.NioSocketImpl.read(Unknown Source)
	at java.base/sun.nio.ch.NioSocketImpl$1.read(Unknown Source)
	at java.base/java.net.Socket$SocketInputStream.implRead(Unknown Source)
	at java.base/java.net.Socket$SocketInputStream.read(Unknown Source)
	at com.mysql.cj.protocol.ReadAheadInputStream.fill(ReadAheadInputStream.java:107)
	at com.mysql.cj.protocol.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:150)
	at com.mysql.cj.protocol.ReadAheadInputStream.read(ReadAheadInputStream.java:180)
	at java.base/java.io.FilterInputStream.read(Unknown Source)
	at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:64)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
	at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
	at com.mysql.cj.protocol.a.NativeProtocol.readServerCapabilities(NativeProtocol.java:537)
	at com.mysql.cj.protocol.a.NativeProtocol.beforeHandshake(NativeProtocol.java:425)
	at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1426)
	at com.mysql.cj.NativeSession.connect(NativeSession.java:133)

검색을 해보니 ssl 때문에 나는 경우도 있었다.
아래처럼 useSSL을 false로 설정!

yml의 데이터베이스 내용에서 ?useSSL=false를 추가
url: jdbc:mysql://db.net:3306/database명?useSSL=false

하지만 역시나 DB를 못붙었다..
알고보니 CBT가 Prod존이라고..
(DB잘 붙는다고 동료가 말해서 그말을 믿는 바람에 삽질을 했다ㅋㅋ)
귀찮더라도 확실하게 내가 알아보고 확인하도록 하자! 

결론은 저런 오류가 나면 DB 커넥션을 못해서 나는 오류임을 인지하고 빠르게 대처하자!

작업 회고 : k8s에 올라가니 pod에 붙어서 여러가지 액션을 취하려고 하니..깔려있는게 없었다...
ping같은걸 날려보려는데..not found가 나서 JPA로 간단한 조회 테스트 코드를 만들어서 테스트를 했다.
또한 확실하게 알아보기 위해서 인프라팀에게도 문의를 넣었다.
그리고  DB셋팅을 했던 동료에게 셋팅 위치를 물어보았다.
방화벽이나 관련 내용들을 직접 서버에 접근해서 알아보기 위함이였다. 

반응형