[
https://issues.apache.org/jira/browse/CASSANDRA-11838?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15306065#comment-15306065
]
Alex Petrov commented on CASSANDRA-11838:
-----------------------------------------
I've ran a git bisect and it confirms the commit
[1e92ce|https://github.com/apache/cassandra/commit/1e92ce43a5a730f81d3f6cfd72e7f4b126db788a]
same mentioned [here|http://cassci.datastax.com/job/trunk_offheap_dtest/185/].
The test is failing also without {{offheap_memtables}}.
The patch is cleaning up the references to values within the reused {{BTree}}
and "trims" the large values within {{DataOutputBuffer}}. Since the buffer is
growing and there's a setup under which the value may grow large enough, even
if it's just read once, it'll remain there, so we need to clean it up.
Unfortunately, we can't just skip recycling for such objects, as there's no way
to pass constructor options (which may be a good thing as {{Recycler}} assumes
that all instances are the same, so it can pick whichever is available), so we
have to force-trim (in this case, re-allocate the buffer to some threshold
value).
> dtest failure in largecolumn_test:TestLargeColumn.cleanup_test
> --------------------------------------------------------------
>
> Key: CASSANDRA-11838
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11838
> Project: Cassandra
> Issue Type: Bug
> Reporter: Philip Thompson
> Assignee: Alex Petrov
> Labels: dtest
> Fix For: 3.x
>
> Attachments: node1.log, node1_debug.log, node2.log, node2_debug.log
>
>
> Example failure at:
> http://cassci.datastax.com/job/trunk_offheap_dtest/200/testReport/largecolumn_test/TestLargeColumn/cleanup_test/
> node 1 contains the following OOM in its log:
> {code}
> ERROR [SharedPool-Worker-1] 2016-05-16 22:54:10,112 Message.java:611 -
> Unexpected exception during request; channel = [id: 0xb97f2640,
> L:/127.0.0.1:9042 - R:/127.0.0.1:48190]
> java.lang.OutOfMemoryError: Java heap space
> at org.apache.cassandra.transport.CBUtil.readRawBytes(CBUtil.java:533)
> ~[main/:na]
> at
> org.apache.cassandra.transport.CBUtil.readBoundValue(CBUtil.java:407)
> ~[main/:na]
> at org.apache.cassandra.transport.CBUtil.readValueList(CBUtil.java:462)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:417)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:365)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:45)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:41)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:280)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:261)
> ~[main/:na]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:360)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:276)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> ERROR [SharedPool-Worker-1] 2016-05-16 22:54:10,756 Message.java:611 -
> Unexpected exception during request; channel = [id: 0xba0be401,
> L:/127.0.0.1:9042 - R:/127.0.0.1:48191]
> java.lang.OutOfMemoryError: Java heap space
> at org.apache.cassandra.transport.CBUtil.readRawBytes(CBUtil.java:533)
> ~[main/:na]
> at
> org.apache.cassandra.transport.CBUtil.readBoundValue(CBUtil.java:407)
> ~[main/:na]
> at org.apache.cassandra.transport.CBUtil.readValueList(CBUtil.java:462)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:417)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:365)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:45)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:41)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:280)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:261)
> ~[main/:na]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:360)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:276)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> ERROR [SharedPool-Worker-1] 2016-05-16 22:54:11,397 Message.java:611 -
> Unexpected exception during request; channel = [id: 0x6a690f39,
> L:/127.0.0.1:9042 - R:/127.0.0.1:48193]
> java.lang.OutOfMemoryError: Java heap space
> at org.apache.cassandra.transport.CBUtil.readRawBytes(CBUtil.java:533)
> ~[main/:na]
> at
> org.apache.cassandra.transport.CBUtil.readBoundValue(CBUtil.java:407)
> ~[main/:na]
> at org.apache.cassandra.transport.CBUtil.readValueList(CBUtil.java:462)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:417)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:365)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:45)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:41)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:280)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:261)
> ~[main/:na]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:360)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:276)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> ERROR [SharedPool-Worker-1] 2016-05-16 22:54:12,006 Message.java:611 -
> Unexpected exception during request; channel = [id: 0xc05601f1,
> L:/127.0.0.1:9042 - R:/127.0.0.1:48192]
> java.lang.OutOfMemoryError: Java heap space
> at org.apache.cassandra.transport.CBUtil.readRawBytes(CBUtil.java:533)
> ~[main/:na]
> at
> org.apache.cassandra.transport.CBUtil.readBoundValue(CBUtil.java:407)
> ~[main/:na]
> at org.apache.cassandra.transport.CBUtil.readValueList(CBUtil.java:462)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:417)
> ~[main/:na]
> at
> org.apache.cassandra.cql3.QueryOptions$Codec.decode(QueryOptions.java:365)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:45)
> ~[main/:na]
> at
> org.apache.cassandra.transport.messages.ExecuteMessage$1.decode(ExecuteMessage.java:41)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:280)
> ~[main/:na]
> at
> org.apache.cassandra.transport.Message$ProtocolDecoder.decode(Message.java:261)
> ~[main/:na]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:360)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:276)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at
> io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
> ~[netty-all-4.0.36.Final.jar:4.0.36.Final]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> {code}
> Given that this test has been stable for a long time, only runs two nodes,
> and we haven't made any recent changes to the environment, I'm filing this
> directly as a bug. Node logs are attached. Please take note that this was run
> with offheap_memtables, as that may be relevant.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)