[JBoss JIRA] (ISPN-5576) Use MessageToByteEncoder to avoid ByteBuf leak w/ exceptions
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5576?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5576:
-----------------------------------------------
Tristan Tarrant <ttarrant(a)redhat.com> changed the Status of [bug 1228676|https://bugzilla.redhat.com/show_bug.cgi?id=1228676] from NEW to ASSIGNED
> Use MessageToByteEncoder to avoid ByteBuf leak w/ exceptions
> ------------------------------------------------------------
>
> Key: ISPN-5576
> URL: https://issues.jboss.org/browse/ISPN-5576
> Project: Infinispan
> Issue Type: Bug
> Components: Remote Protocols
> Affects Versions: 7.2.3.Final
> Reporter: Galder Zamarreño
> Assignee: Galder Zamarreño
> Fix For: 8.0.0.Beta1, 7.2.4.Final, 8.0.0.Final
>
>
> Encoder implementation allocates buffers but does not release them in case of exception before the encoded buffer is added to the response list. As a result, if encoding faces exceptions, it could leak byte buffers and show messages like this:
> {code}
> [io.netty.util.ResourceLeakDetector] LEAK: ByteBuf.release() was not called before it's garbage-collected.
> Enable advanced leak reporting to find out where the leak occurred. To enable advanced leak reporting,
> specify the JVM option '-Dio.netty.leakDetectionLevel=advanced' or call ResourceLeakDetector.setLevel()
> LEAK: ByteBuf.release() was not called before it's garbage-collected.
> Recent access records: 0
> Created at:
> io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:259)
> io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:155)
> io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:141)
> io.netty.buffer.AbstractByteBufAllocator.buffer(AbstractByteBufAllocator.java:75)
> org.infinispan.server.hotrod.HotRodEncoder.encode(HotRodEncoder.scala:29)
> io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89)
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:633)
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:691)
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:626)
> io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:266)
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:633)
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:691)
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:681)
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:716)
> io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:954)
> io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:243)
> org.infinispan.server.core.AbstractProtocolDecoder.writeResponse(AbstractProtocolDecoder.scala:220)
> org.infinispan.server.hotrod.HotRodDecoder.customDecodeHeader(HotRodDecoder.scala:153)
> org.infinispan.server.core.AbstractProtocolDecoder.org$infinispan$server$core$AbstractProtocolDecoder$$decodeHeader(AbstractProtocolDecoder.scala:137)
> org.infinispan.server.core.AbstractProtocolDecoder$$anon$2.run(AbstractProtocolDecoder.scala:98)
> org.infinispan.server.core.AbstractProtocolDecoder$$anon$2.run(AbstractProtocolDecoder.scala:95)
> org.infinispan.security.Security.doAs(Security.java:143)
> org.infinispan.server.core.AbstractProtocolDecoder.secureDecodeDispatch(AbstractProtocolDecoder.scala:95)
> org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:59)
> io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:370)
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:168)
> org.infinispan.server.core.AbstractProtocolDecoder.channelRead(AbstractProtocolDecoder.scala:459)
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
> io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
> java.lang.Thread.run(Thread.java:745)
> {code}
> Also, encoder implementation does not log exceptions reported at encoding time, so exceptions like this can only be noticed via instrumentation.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
10 years, 5 months
[JBoss JIRA] (ISPN-5581) "scala.MatchError: None" in HotRodEncoder
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5581?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5581:
-----------------------------------------------
Tristan Tarrant <ttarrant(a)redhat.com> changed the Status of [bug 1228676|https://bugzilla.redhat.com/show_bug.cgi?id=1228676] from NEW to ASSIGNED
> "scala.MatchError: None" in HotRodEncoder
> -----------------------------------------
>
> Key: ISPN-5581
> URL: https://issues.jboss.org/browse/ISPN-5581
> Project: Infinispan
> Issue Type: Feature Request
> Components: Remote Protocols
> Affects Versions: 8.0.0.Alpha2, 7.2.3.Final
> Reporter: Galder Zamarreño
> Assignee: Galder Zamarreño
> Fix For: 7.2.4.Final, 8.0.0.Final
>
>
> As a result of fixing ISPN-5576, the following exceptions have started appearing
> {code}
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] 04:29:12,353 ERROR (HotRodServerWorker-11-1:) [HotRodEncoder] ISPN005023: Exception encoding message None
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] scala.MatchError: None (of class scala.None$)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodEncoder.encode(HotRodEncoder.scala:32)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:633)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:691)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:681)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:716)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:954)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:243)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.writeResponse(HotRodDecoder.scala:234)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.customDecodeHeader(HotRodDecoder.scala:193)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$hotrod$HotRodDecoder$$decodeHeader(HotRodDecoder.scala:84)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder$$anonfun$decode$1.apply$mcV$sp(HotRodDecoder.scala:47)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder$$anon$1.run(HotRodDecoder.scala:206)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder$$anon$1.run(HotRodDecoder.scala:205)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.security.Security.doAs(Security.java:143)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.wrapSecurity(HotRodDecoder.scala:205)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.decode(HotRodDecoder.scala:45)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:370)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:168)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$core$transport$StatsChannelHandler$$super$channelRead(HotRodDecoder.scala:31)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.core.transport.StatsChannelHandler$class.channelRead(StatsChannelHandler.scala:32)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at org.infinispan.server.hotrod.HotRodDecoder.channelRead(HotRodDecoder.scala:31)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> [08:29:12] : [org.infinispan:infinispan-server-hotrod] at java.lang.Thread.run(Thread.java:745)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
10 years, 5 months
[JBoss JIRA] (ISPN-5607) NearCache: it is possible to read stale data with a put/remove followed by a get
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5607?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5607:
-----------------------------------------------
Tristan Tarrant <ttarrant(a)redhat.com> changed the Status of [bug 1244133|https://bugzilla.redhat.com/show_bug.cgi?id=1244133] from NEW to ASSIGNED
> NearCache: it is possible to read stale data with a put/remove followed by a get
> --------------------------------------------------------------------------------
>
> Key: ISPN-5607
> URL: https://issues.jboss.org/browse/ISPN-5607
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.2.3.Final
> Environment: one hotrod client with 2 hotrod servers
> Reporter: Enrico Olivelli
> Assignee: Tristan Tarrant
> Priority: Blocker
> Fix For: 7.2.4.Final, 8.0.0.Final
>
>
> Writes to the NearCache do not invalidate/update local data on put/remove operations, and so the NearCache (LAZY MODE) is invalidated using an eventlistener in an asynch way.
> It is possible for a client to write a value and issue a get on the same key, and the result of the get would not be the latest value but the one which was present before the update operation.
> This happens frequently when there is very much traffic on the connection of the listener which receives the events for the NearCache.
> It would be better at least to invalidate locally every entry modified from the client itself
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
10 years, 5 months
[JBoss JIRA] (ISPN-5611) Make the remote iterator to respect the RequestBalancingStrategy in the Hot Rod client
by Gustavo Fernandes (JIRA)
[ https://issues.jboss.org/browse/ISPN-5611?page=com.atlassian.jira.plugin.... ]
Gustavo Fernandes updated ISPN-5611:
------------------------------------
Fix Version/s: 8.0.0.Beta2
(was: 8.0.0.CR1)
> Make the remote iterator to respect the RequestBalancingStrategy in the Hot Rod client
> --------------------------------------------------------------------------------------
>
> Key: ISPN-5611
> URL: https://issues.jboss.org/browse/ISPN-5611
> Project: Infinispan
> Issue Type: Enhancement
> Components: Remote Protocols
> Affects Versions: 8.0.0.Beta1
> Reporter: Gustavo Fernandes
> Assignee: Gustavo Fernandes
> Fix For: 8.0.0.Beta2
>
>
> Currently the initial server that will hold the iteration state is automatically chosen based on segment ownership. If data location is known beforehand, it's more efficient to hint the iteration to start on a certain node.
> The {{FailoverRequestBalancingStrategy}} is a mechanism in place to do that.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
10 years, 5 months
[JBoss JIRA] (ISPN-5607) NearCache: it is possible to read stale data with a put/remove followed by a get
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5607?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration updated ISPN-5607:
------------------------------------------
Bugzilla Update: Perform
Bugzilla References: https://bugzilla.redhat.com/show_bug.cgi?id=1244133
> NearCache: it is possible to read stale data with a put/remove followed by a get
> --------------------------------------------------------------------------------
>
> Key: ISPN-5607
> URL: https://issues.jboss.org/browse/ISPN-5607
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.2.3.Final
> Environment: one hotrod client with 2 hotrod servers
> Reporter: Enrico Olivelli
> Assignee: Tristan Tarrant
> Priority: Blocker
> Fix For: 7.2.4.Final, 8.0.0.Final
>
>
> Writes to the NearCache do not invalidate/update local data on put/remove operations, and so the NearCache (LAZY MODE) is invalidated using an eventlistener in an asynch way.
> It is possible for a client to write a value and issue a get on the same key, and the result of the get would not be the latest value but the one which was present before the update operation.
> This happens frequently when there is very much traffic on the connection of the listener which receives the events for the NearCache.
> It would be better at least to invalidate locally every entry modified from the client itself
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
10 years, 5 months