대머리개발자

R2DBC ...불행의 시작...(2) 본문

개발이야기/DataBase

R2DBC ...불행의 시작...(2)

대머리개발자 2023. 6. 9. 09:44
728x90

우리내 인생사는 시작과 끝이 중요하다.

해서 결론부터 이야기 하자면

 

일단 R2DBC lib 문제는 아니였다.
또한 로컬에서는 해당 문제가 재현되지 않았다.

결국s DB 서버 설정 문제....

 

이미 해당증상을 경험했고 해결을 했다고 생각했는데... 또 다시 발생하니.. 이런 코로나 같은 다시 한번 곱 씹어 보자!!!

재현 증상은
서버를 기동 후 바로 테스트 진행  -> 정상 OK
3분정도 지나면 모든 커넥션 소멸 (Connection has been closed by peer )
다시 테스트 진행 -> MySqlConnectionClosedException

다시 한번 R2DBC를 변경해서 테스트 시도!!

dev.miku.r2dbc.mysql.client.MySqlConnectionClosedException:
Cannot exchange messages because the connection is closed

io.asyncer.r2dbc.mysql.client.MySqlConnectionClosedException:
Cannot exchangs because the connection is closed

 

로컬에서는 해당 문제가 재현되지 않는다.

"3분" 지나면 커넥션 소멸되는 로그가 발생한다.

 

두 가지 현상을 가지고 해결의 실마리로.......렛츠고!

 

 

 

나의 설정(maxLifeTime, maxIdleTime)에도 영향도 가 없고 그냥 커넥션이 죽네?  왜? 왜? 왜!? 안 먹히는거지!! 혹은 그 보다 빠른 커넥션 Close 명령이 어디선가 실행 되나.? 해서 DB 자체적으로 커넥션 Close 옵션이 있나 해서 찾아봤더니

아 ㅅㅍ

근데 생각해보면 풀장에  커넥션 친구가 없으면 새롭게 뽑아서 일을 시키면 되는데.... 왜 오류 뿜고 지롤..s?

 

설정 wait_timeout 보다 2~3초 짧게 잡아서 해결을 봤다.

 .option(Option.valueOf("maxIdleTime"), Duration.ofSeconds(157))
 .option(Option.valueOf("maxLifeTime"), Duration.ofSeconds(157))

 

DB 쪽에서 먼저 close를 하게 되면 우리쪽의 "풀장" 관리가 잘 안되나보다.. 외부요인에 의해서 칼질 당하는 거니..

내부에서 "먼저" 처리 할 수 있도록 변경했더니 잘 핸드쉐이크를 했다. 오류 뿜고 지롤s 하지 않는다...고맙다.! 워워!

우리 이제 헤어지지 말자.!!! 젭압

 

 

R2DBC의 설정은 1.POJO 방식과 2.프러퍼티 설정을 통해서 진행 할 수 있다.

 

 

 

R2DBC 풀장 관련 : https://github.com/r2dbc/r2dbc-pool

 

GitHub - r2dbc/r2dbc-pool: Connection Pooling for Reactive Relational Database Connectivity

Connection Pooling for Reactive Relational Database Connectivity - GitHub - r2dbc/r2dbc-pool: Connection Pooling for Reactive Relational Database Connectivity

github.com

R2DBC : https://github.com/asyncer-io/r2dbc-mysql

 

GitHub - asyncer-io/r2dbc-mysql: Reactive Relational Database Connectivity for MySQL. The official successor to mirromutth/r2dbc

Reactive Relational Database Connectivity for MySQL. The official successor to mirromutth/r2dbc-mysql(dev.miku:r2dbc-mysql). - GitHub - asyncer-io/r2dbc-mysql: Reactive Relational Database Connecti...

github.com

 

그리고 최근까지 업데이트가 진행되는 "io.asyncer:r2dbc-mysql:0.9.3"  이 친구로 다시 장착했다. 

 

몇 개 안되는 기능 전수 테스트 고고 ㅠㅠ

728x90

'개발이야기 > DataBase' 카테고리의 다른 글

게시판 코드에서...고민s  (0) 2023.10.24
[R2DBC] 바인딩  (0) 2023.09.13
R2DBC ...불행의 시작...  (1) 2023.04.12
R2DBC 동적 쿼리는...쥐쥐s  (0) 2023.04.05
[우분투] 마리아DB 대/소문자 설정  (0) 2023.03.07