[ https://issues.apache.org/jira/browse/CASSANDRA-12263?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sylvain Lebresne updated CASSANDRA-12263: ----------------------------------------- Reviewer: Branimir Lambov Fix Version/s: 3.x 3.0.x Status: Patch Available (was: Open) The assertion is due to the code in {{DataResolver}} mistakenly assuming a marker is open when it may not. But this is actually a manifestation of a larger problem, which is that the code in {{DataResolver}} dealing with range tombstone is incorrect (it doesn't compute read-repair correctly). In fact, the {{MergeListener}} interface that it uses isn't providing enough information for it to do its job properly. Attaching a patch that solves that, including a new unit test that both reproduce the assertion of this ticket, but also shows the code wasn't doing what it should have in the first place. | [12263-3.0|https://github.com/pcmanus/cassandra/commits/12263-3.0] | [utests|http://cassci.datastax.com/job/pcmanus-12263-3.0-testall] | [dtests|http://cassci.datastax.com/job/pcmanus-12263-3.0-dtest] | | [12263-trunk|https://github.com/pcmanus/cassandra/commits/12263-trunk] | [utests|http://cassci.datastax.com/job/pcmanus-12263-trunk-testall] | [dtests|http://cassci.datastax.com/job/pcmanus-12263-trunk-dtest] | > Exception leads to the "connection closed". > ------------------------------------------- > > Key: CASSANDRA-12263 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12263 > Project: Cassandra > Issue Type: Bug > Environment: CentOS 6, Cassandra 3.5 > Reporter: Artem Rokhin > Assignee: Sylvain Lebresne > Fix For: 3.0.x, 3.x > > > Just noticed the following exception in Cassandra logs: > {noformat} > java.lang.IllegalStateException: null > at > org.apache.cassandra.db.rows.RangeTombstoneBoundMarker.openDeletionTime(RangeTombstoneBoundMarker.java:87) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.service.DataResolver$RepairMergeListener$MergeListener.onMergedRangeTombstoneMarkers(DataResolver.java:275) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator$MergeReducer.getReduced(UnfilteredRowIterators.java:482) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator$MergeReducer.getReduced(UnfilteredRowIterators.java:437) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.utils.MergeIterator$ManyToOne.consume(MergeIterator.java:217) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.utils.MergeIterator$ManyToOne.computeNext(MergeIterator.java:156) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator.computeNext(UnfilteredRowIterators.java:419) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator.computeNext(UnfilteredRowIterators.java:279) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.db.transform.BaseRows.hasNext(BaseRows.java:112) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.processPartition(SelectStatement.java:720) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:659) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:382) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:335) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:209) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:76) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:206) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:472) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:449) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:130) > ~[apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [apache-cassandra-3.5.jar:3.5] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [apache-cassandra-3.5.jar:3.5] > at > io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) > [netty-all-4.0.23.Final.jar:4.0.23.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) > [netty-all-4.0.23.Final.jar:4.0.23.Final] > at > io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32) > [netty-all-4.0.23.Final.jar:4.0.23.Final] > at > io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324) > [netty-all-4.0.23.Final.jar:4.0.23.Final] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_91] > at > org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164) > [apache-cassandra-3.5.jar:3.5] > at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) > [apache-cassandra-3.5.jar:3.5] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91] > {noformat} > This leads to the closed connection: > {noformat} > java.lang.RuntimeException: > com.datastax.driver.core.exceptions.TransportException: [/172.20.202.193] > Connection has been closed > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)