Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pinpoint
- UnsupportedOperationException
- 티스토리챌린지
- 애자일 싫타
- 플루터
- formik
- 핀포인트
- 7879
- 월급루팡 일지
- LPOS
- R2DBC Paging
- fake jwt
- Armeria
- 논블록킹 성능
- jsonMarshaller
- 노드간 통신
- jar 배포
- Ingress Controller Fake
- 개발 어렵당.ㅠ
- ㅉ때
- hbase 저장공간 설정
- save/update
- pinpoint 2.5.3
- nGinder
- OIDC
- RedirectService
- intellij
- 오블완
- Loki 로그
- reids
Archives
- Today
- Total
대머리개발자
R2DBC ...불행의 시작... 본문
728x90
이제 정말 몇 가닥 안 남았는데 ㅠ 진정 민머리가 얼마 안 남았다.. 가즈아!!
//runtimeOnly 'io.asyncer:r2dbc-mysql:1.0.0'
//runtimeOnly 'com.github.jasync-sql:jasync-r2dbc-mysql'
//runtimeOnly 'org.mariadb:r2dbc-mariadb'
runtimeOnly 'dev.miku:r2dbc-mysql:0.8.2.RELEASE'
로컬의 개발환경은 마리아DB다. 마리아의 모태가 mysql이기 때문에 호환이 되는것 같다. 완벽하게는 아니지만..
각 라이브러리를 테스트 한 이유는 클라우드 환경에서 커넥션이 끊어졌다. 붙었다.. 끊어졌다.. 붙었다......힘들어 돌아 가시겠네...
20230412 16:41:15.001 [armeria-common-worker-epoll-3-4] DEBUG [ConnectionPool:254] - Obtaining new connection from the pool
20230412 16:41:15.002 [armeria-common-worker-epoll-3-4] DEBUG [MySqlConnection:215] - Connection closing
20230412 16:41:15.003 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:216] - Connection close succeed
20230412 16:41:15.004 [reactor-tcp-epoll-2] DEBUG [ConnectionPool:254] - Obtaining new connection from the pool
20230412 16:41:15.004 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:215] - Connection closing
20230412 16:41:15.004 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:216] - Connection close succeed
20230412 16:41:16.790 [armeria-common-worker-epoll-3-1] DEBUG [ConnectionPool:254] - Obtaining new connection from the pool 2
0230412 16:41:16.791 [armeria-common-worker-epoll-3-1] DEBUG [MySqlConnection:215] - Connection closing
20230412 16:41:16.800 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:216] - Connection close succeed
20230412 16:41:16.800 [reactor-tcp-epoll-2] DEBUG [ConnectionPool:254] - Obtaining new connection from the pool
20230412 16:41:16.801 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:215] - Connection closing 2
0230412 16:41:16.801 [reactor-tcp-epoll-2] DEBUG [MySqlConnection:216] - Connection close succeed
누군가의 블로그에서 dev.miku.. 더 이상 지원 안 한다고 쓰지 말라고 한다. 실제 해당 깃을 가도 최종 커밋은 2년전..ㅎㄷㄷ
dev.miku --> io.asyncer 변경 테스트
1. 날짜를 포팅하는 클래스가 다르닷.. 이런 뛰밤... 일단 주석 ㄱㄱ
(Timestamp --> ZonedDateTime)
2. 잘 돌아가는 코드가 정상적으로 되지 않았다.....물론 전체적으로 테스트 해보지 않았지만... 오류 뿜뿜!
public Mono<Boolean> deleteClient(String clientID){
return clientRepository.deleteByClientId(clientID)
.flatMap(ok -> ServiceUtil.getRedisService().delOpsForValue(Constants.REDIS_CLIENT + clientID))
.flatMap(ok -> ServiceUtil.getScopeService().deleteMappingByClient(clientID))
.onErrorMap(e -> new DefinedException(e.getMessage()));
}
flatMap으로 진행한 친구들이 실행되지않구.. onErrorMap으로 고고싱하였다. ㅜ
reactor.core.Exceptions$ErrorCallbackNotImplemented: com.oauth.common.DefinedException: java.lang.Long cannot be cast to java.lang.Integer
Caused by: com.oauth.common.DefinedException: java.lang.Long cannot be cast to java.lang.Integer
at com.oauth.client.ClientService.lambda$deleteClient$6(ClientService.java:92)
at reactor.core.publisher.Mono.lambda$onErrorMap$31(Mono.java:3776)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:172)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:172)
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
at reactor.core.publisher.FluxUsingWhen$UsingWhenSubscriber.deferredError(FluxUsingWhen.java:398)
..
1. io.asyncer 일단 쓰레기통!!
어차피 ㅋㅋ 바꿔서 반영해도 커넥션 나가리데스 ㅠㅠ
2. org.mariadb..는 반대로 mysql DB에서는 지원이 아예 안된다. ㅋ
3. jasync 마지막...하기전에... pool 관련 셋팅을 해보자. ㅠ
r2dbc-pool
spring :
profiles:
active:
on-profile: prod
r2dbc:
url: ${r2dbc-url}
username: ${r2dbc-username}
password: ${r2dbc-password}
# pool:
# enabled: true
# initial-size: 20
# max-size: 20
# max-idle-time: 10m
# max-life-time: 30m
# validation-query: select count(1) from client
# data:
# r2dbc:
# repositories:
# enabled: true
프로퍼티는...먹통이다..... 삽질 작렬!!s
자바로 설정했더니 다행이도.......다행이도.ㅠㅠ 커넥션... 잘 유지s 프로퍼티 바로 주석. ㄱㄱㄱ
@Configuration
@EnableR2dbcRepositories
public class R2dbcConfig extends AbstractR2dbcConfiguration {
@Value("${spring.r2dbc.url}")
private String host;
@Value("${spring.r2dbc.username}")
private String username;
@Value("${spring.r2dbc.password}")
private String password;
@Override
@Bean
public ConnectionFactory connectionFactory() {
return ConnectionFactories.get(ConnectionFactoryOptions.builder()
.option(ConnectionFactoryOptions.DRIVER, "pool")
.option(ConnectionFactoryOptions.PROTOCOL, "mysql")
.option(ConnectionFactoryOptions.HOST, host)
.option(ConnectionFactoryOptions.PORT, 3306)
.option(ConnectionFactoryOptions.USER, username)
.option(ConnectionFactoryOptions.PASSWORD, password)
.option(ConnectionFactoryOptions.DATABASE, "oauth2")
.option(Option.valueOf("initialSize"), 10)
.option(Option.valueOf("maxSize"), 20)
.option(Option.valueOf("maxIdleTime"), Duration.ofMinutes(5))
.option(Option.valueOf("maxLifeTime"), Duration.ofMinutes(5))
.option(Option.valueOf("validationQuery"), "select 1+1")
.build());
}
}
※※ 2023.06.08
계속적인 커넥션 문제로 인해서
Caused by: org.springframework.dao.DataAccessResourceFailureException: Failed to obtain R2DBC Connection; nested exception is dev.miku.r2dbc.mysql.client.MySqlConnectionClosedException:
io.asyncer 다시....이 친구로 적용
그래도 해당 lib는계 속적으로 관리가되고 있네요.
문제의 원인은 다른곳에 있었으니...
728x90
'개발이야기 > DataBase' 카테고리의 다른 글
게시판 코드에서...고민s (0) | 2023.10.24 |
---|---|
[R2DBC] 바인딩 (0) | 2023.09.13 |
R2DBC ...불행의 시작...(2) (0) | 2023.06.09 |
R2DBC 동적 쿼리는...쥐쥐s (0) | 2023.04.05 |
[우분투] 마리아DB 대/소문자 설정 (0) | 2023.03.07 |