mirromutth / r2dbc-mysql

R2DBC MySQL Implementation
Apache License 2.0
656 stars 100 forks source link

multiple servers in the url #183

Open vra5107 opened 3 years ago

vra5107 commented 3 years ago

Hi

jdbc allowed multiple servers in the url like this.

jdbc:mysql://dbsrt2511:3306,dbsrt2512:3306,dbsrt2516:3306

But something similar with r2dbc isn't working

r2dbc:mysql://dbsrt2511:3306,dbsrt2512:3306,dbsrt2516:3306

Is this an issue at r2dbc-mysql level or r2dbc level ?

vra5107 commented 3 years ago

Official documentation says the multiple hosts are supported.

https://r2dbc.io/spec/0.8.1.RELEASE/api/io/r2dbc/spi/ConnectionFactories.html

But the issue here says, the driver has to support the multiple hosts too.

https://github.com/r2dbc/r2dbc-spi/issues/179#issuecomment-686287214

Consequently I see the exception below when I add muliple hosts in the connection url.

21:10:23.910 [reactor-tcp-epoll-4] DEBUG reactor.pool.SimpleDequePool - failed to warm up extra resource 1/9: java.net.UnknownHostException: dbsrt2511:3306,dbsrt2512:3306,dbsrt2516:3306: invalid IPv6 address 21:10:23.909 [reactor-http-epoll-1] TRACE r.netty.channel.ChannelOperations - [id: 0x2df79ecb, L:/10.131.33.50:8080 - R:/10.131.32.1:53290] Disposing ChannelOperation from a channel java.lang.Exception: ChannelOperation terminal stack at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:421) at reactor.netty.http.server.HttpServerOperations.cleanHandlerTerminate(HttpServerOperations.java:579) at reactor.netty.http.server.HttpTrafficHandler.operationComplete(HttpTrafficHandler.java:393) at reactor.netty.http.server.HttpTrafficHandler.operationComplete(HttpTrafficHandler.java:64) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605) at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) at io.netty.util.concurrent.PromiseCombiner.tryPromise(PromiseCombiner.java:170) at io.netty.util.concurrent.PromiseCombiner.access$600(PromiseCombiner.java:35) at io.netty.util.concurrent.PromiseCombiner$1.operationComplete0(PromiseCombiner.java:62) at io.netty.util.concurrent.PromiseCombiner$1.operationComplete(PromiseCombiner.java:44) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552) at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605) at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717) at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272) at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) at io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(AbstractEpollStreamChannel.java:305) at io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(AbstractEpollStreamChannel.java:510) at io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:422) at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:941) at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0(AbstractEpollChannel.java:520) at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:905) at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:825)