Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting a "org.springframework.data.mapping.MappingException: Couldn't read column id from Row" exception, caused by "io.netty.util.IllegalReferenceCountException: refCnt: 0" or by "java.lang.IndexOutOfBoundsException: readerIndex(93) + length(1) exceeds writerIndex(93): PooledSlicedByteBuf(ridx: 93, widx: 93, cap: 93/93, unwrapped: PooledUnsafeDirectByteBuf(freed))" when reading a table with more than 32 rows #7

Closed
davide1995 opened this issue Oct 22, 2020 · 13 comments

Comments

@davide1995
Copy link

davide1995 commented Oct 22, 2020

Hello, everyone.
I am experiencing an error when I try to read a table in a MySQL database containing more than 32 rows. Up to 32 everything works correctly. Error as in the title.

Expected Behavior
More than 32 rows should be handled correctly

Actual Behavior
I happened to observe these two exceptions (sometimes the first, sometimes the latter):

org.springframework.data.mapping.MappingException: Couldn't read column id from Row.
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:669) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint ⇢ Handler ch.davide.demorefcntproblem.MyController#getInformation(ServerWebExchange) [DispatcherHandler]
	|_ checkpoint ⇢ HTTP GET "/information" [ExceptionHandlingWebHandler]
Stack trace:
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:669) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.relational.core.conversion.BasicRelationalConverter$ConvertingParameterValueProvider.getParameterValue(BasicRelationalConverter.java:264) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.extractInvocationArguments(ClassGeneratingEntityInstantiator.java:262) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.createInstance(ClassGeneratingEntityInstantiator.java:235) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:87) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.relational.core.conversion.BasicRelationalConverter.createInstance(BasicRelationalConverter.java:147) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.createInstance(MappingR2dbcConverter.java:300) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:121) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:116) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:46) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:29) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.mariadb.r2dbc.MariadbResult.lambda$map$1(MariadbResult.java:110) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:163) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:650) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:728) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.request(FluxWindowPredicate.java:815) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:243) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapInner.request(FluxFlatMap.java:1021) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:721) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:580) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.request(FluxFlatMap.java:339) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1651) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2116) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.request(ChannelSendOperator.java:296) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:228) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:86) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscribe(ChannelSendOperator.java:358) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
		at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:65) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Flux.subscribe(Flux.java:8325) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.ignoreDone(MonoIgnoreThen.java:190) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreInner.onComplete(MonoIgnoreThen.java:240) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:180) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
		at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:414) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:930) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:897) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
Caused by: io.netty.util.IllegalReferenceCountException: refCnt: 0
	at io.netty.buffer.AbstractByteBuf.ensureAccessible(AbstractByteBuf.java:1489) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1475) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:731) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.buffer.AbstractByteBuf.readUnsignedByte(AbstractByteBuf.java:745) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at org.mariadb.r2dbc.codec.TextRowDecoder.setPosition(TextRowDecoder.java:89) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.codec.TextRowDecoder.get(TextRowDecoder.java:30) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.decode(MariadbRow.java:91) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.get(MariadbRow.java:47) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.get(MariadbRow.java:55) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at io.r2dbc.spi.Row.get(Row.java:78) ~[r2dbc-spi-0.8.2.RELEASE.jar:na]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:656) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.relational.core.conversion.BasicRelationalConverter$ConvertingParameterValueProvider.getParameterValue(BasicRelationalConverter.java:264) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.extractInvocationArguments(ClassGeneratingEntityInstantiator.java:262) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.createInstance(ClassGeneratingEntityInstantiator.java:235) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:87) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.relational.core.conversion.BasicRelationalConverter.createInstance(BasicRelationalConverter.java:147) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.createInstance(MappingR2dbcConverter.java:300) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:121) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:116) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:46) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:29) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.mariadb.r2dbc.MariadbResult.lambda$map$1(MariadbResult.java:110) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:163) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:650) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:728) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.request(FluxWindowPredicate.java:815) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:243) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapInner.request(FluxFlatMap.java:1021) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:721) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:580) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.request(FluxFlatMap.java:339) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1651) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2116) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.request(ChannelSendOperator.java:296) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:228) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:86) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscribe(ChannelSendOperator.java:358) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:65) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Flux.subscribe(Flux.java:8325) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.ignoreDone(MonoIgnoreThen.java:190) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreInner.onComplete(MonoIgnoreThen.java:240) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:180) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
	at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:414) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:930) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:897) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
org.springframework.data.mapping.MappingException: Couldn't read column id from Row.
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:669) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint ⇢ Handler ch.davide.demorefcntproblem.MyController#getInformation(ServerWebExchange) [DispatcherHandler]
	|_ checkpoint ⇢ HTTP GET "/information" [ExceptionHandlingWebHandler]
Stack trace:
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:669) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.relational.core.conversion.BasicRelationalConverter$ConvertingParameterValueProvider.getParameterValue(BasicRelationalConverter.java:264) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.extractInvocationArguments(ClassGeneratingEntityInstantiator.java:262) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.createInstance(ClassGeneratingEntityInstantiator.java:235) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:87) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
		at org.springframework.data.relational.core.conversion.BasicRelationalConverter.createInstance(BasicRelationalConverter.java:147) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.createInstance(MappingR2dbcConverter.java:300) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:121) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:116) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:46) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:29) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
		at org.mariadb.r2dbc.MariadbResult.lambda$map$1(MariadbResult.java:110) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:163) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:650) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:728) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxWindowPredicate$WindowFlux.request(FluxWindowPredicate.java:815) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:243) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapInner.request(FluxFlatMap.java:1021) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:721) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:580) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.request(FluxFlatMap.java:339) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1651) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2116) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.request(ChannelSendOperator.java:296) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:228) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:86) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscribe(ChannelSendOperator.java:358) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
		at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:65) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.Flux.subscribe(Flux.java:8325) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.ignoreDone(MonoIgnoreThen.java:190) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreInner.onComplete(MonoIgnoreThen.java:240) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
		at reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:180) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
		at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:414) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:930) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:897) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.51.Final.jar:4.1.51.Final]
		at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(93) + length(1) exceeds writerIndex(93): PooledSlicedByteBuf(ridx: 93, widx: 93, cap: 93/93, unwrapped: PooledUnsafeDirectByteBuf(freed))
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:731) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.buffer.AbstractByteBuf.readUnsignedByte(AbstractByteBuf.java:745) ~[netty-buffer-4.1.51.Final.jar:4.1.51.Final]
	at org.mariadb.r2dbc.codec.TextRowDecoder.setPosition(TextRowDecoder.java:89) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.codec.TextRowDecoder.get(TextRowDecoder.java:30) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.decode(MariadbRow.java:91) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.get(MariadbRow.java:47) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at org.mariadb.r2dbc.MariadbRow.get(MariadbRow.java:55) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at io.r2dbc.spi.Row.get(Row.java:78) ~[r2dbc-spi-0.8.2.RELEASE.jar:na]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter$RowParameterValueProvider.getParameterValue(MappingR2dbcConverter.java:656) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.relational.core.conversion.BasicRelationalConverter$ConvertingParameterValueProvider.getParameterValue(BasicRelationalConverter.java:264) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.extractInvocationArguments(ClassGeneratingEntityInstantiator.java:262) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.createInstance(ClassGeneratingEntityInstantiator.java:235) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:87) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
	at org.springframework.data.relational.core.conversion.BasicRelationalConverter.createInstance(BasicRelationalConverter.java:147) ~[spring-data-relational-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.createInstance(MappingR2dbcConverter.java:300) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:121) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.MappingR2dbcConverter.read(MappingR2dbcConverter.java:116) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:46) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.springframework.data.r2dbc.convert.EntityRowMapper.apply(EntityRowMapper.java:29) ~[spring-data-r2dbc-1.1.3.RELEASE.jar:1.1.3.RELEASE]
	at org.mariadb.r2dbc.MariadbResult.lambda$map$1(MariadbResult.java:110) ~[r2dbc-mariadb-0.8.3-beta1.jar:0.8.3-beta1]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:163) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:650) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:728) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxWindowPredicate$WindowFlux.request(FluxWindowPredicate.java:815) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:243) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapInner.request(FluxFlatMap.java:1021) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:721) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:580) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.request(FluxFlatMap.java:339) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1651) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2116) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.request(ChannelSendOperator.java:296) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:228) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:86) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscribe(ChannelSendOperator.java:358) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:65) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.Flux.subscribe(Flux.java:8325) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.ignoreDone(MonoIgnoreThen.java:190) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreInner.onComplete(MonoIgnoreThen.java:240) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
	at reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:180) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
	at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:414) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:930) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:897) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-transport-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.51.Final.jar:4.1.51.Final]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]

Steps to Reproduce
I created a minimal reproducible project that can be downloaded:
https://filebin.net/ok553zxmnqnrflbj

MySQL DDL:

create table Information (
	id int primary key auto_increment,
	start datetime,
	end datetime,
	description varchar(512)
);

Insert 33 rows through:
insert into Information (start, end, description) values (now(), now(), 'Something');
an error occurs, remove now a row, no error

Workaround
Set a groupBy followed by a flatMap:

public Flux<Dto> getFromRepo() {
        return this.myRepository
                .findComing()
                .groupBy(Dto::getId)
                .flatMap(dto -> dto.reduce((dto1, dto2) -> dto1));
}

Environment
Spring Boot: 2.4.0

  • JVM version (java -version):
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

  • OS and version (eg. uname -a):
    Darwin MyPC 19.3.0 Darwin Kernel Version 19.3.0: Thu Jan 9 20:58:23 PST 2020; root:xnu-6153.81.5~1/RELEASE_X86_64 x86_64

@davide1995
Copy link
Author

Any update on that?

@rusher
Copy link
Collaborator

rusher commented Nov 24, 2020

It seems the filebin link is wrong, Could you repost the project ?

@rusher
Copy link
Collaborator

rusher commented Nov 25, 2020

Reading code, I've not seen any issue that can lead to this error.
reposting the minimal reproducible project would be nice!

@davide1995
Copy link
Author

Hi @rusher thanks for your interest on this bug. I updated my post with the new link. Please check it out

@rusher
Copy link
Collaborator

rusher commented Nov 25, 2020

thanks.
I've tried with an empty table and with some data without issue ( using with mariadb server 10.4.13,10.5.8 or MySQL 8.0.22)

I imagine you've populated table Information with some data. Could you export the table data and indicate the exact server version?

@rusher
Copy link
Collaborator

rusher commented Nov 25, 2020

ok, reproduced now.
No need to reply.

@davide1995
Copy link
Author

davide1995 commented Nov 25, 2020

I was dumping data, thanks 👍

rusher added a commit that referenced this issue Nov 27, 2020
Issue is that connector handle backpressure incorrectly, resulting possibility that data might be release before client has time to use it.

Correction is that the rows data are released only when used or error is thrown.
@rusher
Copy link
Collaborator

rusher commented Nov 27, 2020

thanks for the project that reproduced the issue.
There was a problem in backpressure implementation that might cause client to have this error if not handling server result fast enough.
This is corrected in snapshot version :

<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.mariadb</groupId>
        <artifactId>r2dbc-mariadb</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
</dependencies>

and will soon be released

@rusher rusher closed this as completed Nov 27, 2020
@davide1995
Copy link
Author

Glad to know! I will test as soon as possible

@davide1995
Copy link
Author

I was trying to update my dependency but I receive this error: Cannot resolve org.mariadb:r2dbc-mariadb:1.0.0-SNAPSHOT
I added the repository so I've no idea what cause this problem

@rusher
Copy link
Collaborator

rusher commented Nov 30, 2020

hm, maybe just bad configuration on pom.xml ?
I've just changed that part :

	<properties>
		<java.version>1.8</java.version>
		<org.mariadb.version>1.0.0-SNAPSHOT</org.mariadb.version>
		<org.projectlombok.version>1.18.12</org.projectlombok.version>
	</properties>

	<repositories>
		<repository>
			<id>sonatype-nexus-snapshots</id>
			<name>Sonatype Nexus Snapshots</name>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</repository>
	</repositories>

then run
mvn spring-boot:run

@davide1995
Copy link
Author

davide1995 commented Dec 1, 2020

Thanks for your answer. Nothing with that 👍 Just my IntelliJ configuration wrong. I fixed with Preferences > Maven > Work offline

This was referenced Mar 15, 2021
@unoexperto
Copy link

unoexperto commented Nov 27, 2021

@rusher I'm having similar issue with version 1.1.1-rc.

I couldn't get to the bottom of this yet but I get IllegalReferenceCountException exception in TextRowDecoder.setPosition().

It happens in line

short type = this.buf.readUnsignedByte();

because reference count of RowDecoder.buf. I'm assuming you're reusing instance of ByteBuf. So far I can't find consistent pattern to reproduce it but I can say it happens when query returns a lot of rows (80K+ items).

Sadly I'm seeing that it doesn't happen when I slow down the application (using profiler for example). Race condition somewhere?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants