[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16093748#comment-16093748 ] Nimi Wariboko Jr. commented on CASSANDRA-12694: --- Here's the stacktrace I saw with 3.10: {code} ERROR [ReadRepairStage:9] 2017-07-19 18:51:32,607 CassandraDaemon.java:229 - Exception in thread Thread[ReadRepairStage:9,5,main] java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered partition at org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:227) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:215) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:178) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:270) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:98) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:203) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.service.DigestResolver.compareResponses(DigestResolver.java:87) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.service.ReadCallback$AsyncRepairRunner.run(ReadCallback.java:233) ~[apache-cassandra-3.10.jar:3.10] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_91] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_91] at org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:79) ~[apache-cassandra-3.10.jar:3.10] at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_91] Caused by: java.io.IOException: Corrupt empty row found in unfiltered partition at org.apache.cassandra.db.rows.UnfilteredSerializer.deserialize(UnfilteredSerializer.java:445) ~[apache-cassandra-3.10.jar:3.10] at org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:222) ~[apache-cassandra-3.10.jar:3.10] ... 12 common frames omitted {/code} However, I upgraded to 3.11, and the issue seems to have gone away. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > Fix For: 3.0.11, 3.10 > > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16093747#comment-16093747 ] Jeff Jirsa commented on CASSANDRA-12694: It appears to be [here|https://github.com/apache/cassandra/commit/1e067746e432dc0a450ad111a8ec545011bb5bc7] , which seems to be 3.0.10, 3.10, 3.11.0 It's still missing the CHANGES, and the JIRA is typo'd in it, but it appears to be in 3.10 If you're still seeing it in 3.10, can you please paste the full stack trace? > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > Fix For: 3.0.11, 3.10 > > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail:
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16093636#comment-16093636 ] Nimi Wariboko Jr. commented on CASSANDRA-12694: --- Was the issue resolved in 3.10, or 3.11? Do I have to do anything special to fix a table after upgrading to 3.10? I'm still hitting this error when trying to update a static column with LWT. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > Fix For: 3.0.11, 3.10 > > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15839091#comment-15839091 ] Jeff Jirsa commented on CASSANDRA-12694: FYI, this commit ( https://github.com/apache/cassandra/commit/d9b06e8af41c42244f76058641aeecda53a9bf75 ) didn't have the CHANGES.txt entry and used an incorrect JIRA number. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > Fix For: 3.0.11, 3.10 > > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15838987#comment-15838987 ] Ben Slater commented on CASSANDRA-12694: I am on leave until Monday 30 Jan. If you need an immediate response please contact [1]sa...@instaclustr.com or [2]supp...@instaclustr.com as appropriate. For less urgent queries, I will be checking email every couple of days and respond or redirect. Cheers Ben Slater Instaclustr -- Ben SlaterChief Product Officer[3]Instaclustr: Cassandra + Spark - Managed | Consulting | Support[4]www.instaclustr.com [1] mailto:sa...@instaclustr.com [2] mailto:supp...@instaclustr.com [3] https://www.instaclustr.com [4] http://www.instaclustr.com > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > Fix For: 3.0.11, 3.10 > > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15732283#comment-15732283 ] Alex Petrov commented on CASSANDRA-12694: - As [CASSANDRA-12768], I've updated the patch. It now became much smaller, as we rely on fetch all/query only selected columns distinction in {{ColumnFilter}}. |[3.0|https://github.com/ifesdjeen/cassandra/tree/12694-3.0]|[utest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-3.0-testall/]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-3.0-dtest/]| |[trunk|https://github.com/ifesdjeen/cassandra/tree/12694-trunk]|[utest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-trunk-testall/]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-trunk-dtest/]| |[dtest patch|https://github.com/riptano/cassandra-dtest/pull/1403]| > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15673675#comment-15673675 ] Jonas Borgström commented on CASSANDRA-12694: - And 3.0.10, 2.2.8 seems to work though... > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15673637#comment-15673637 ] Jonas Borgström commented on CASSANDRA-12694: - I'm able to reproduce this on 3.9 as well > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562438#comment-15562438 ] Sylvain Lebresne commented on CASSANDRA-12694: -- Had a closer look at this. But first, I don't really agree that the new outputs from test are better. The case in question deletes a row if it exists. As the condition is entirely based on the row existence, I don't think making the output change based on partition-related information is necessary meaningful. In fact, we shouldn't *have* to read static content to even decide if a row exists or not. In all fairness, we never carefully defined what the CAS result set output contained, so what's better or not is debatable, but I think we should preserver the output for 2 main reasons: 1) to not break backward compatibility (we shouldn't unless we think a behavior was really a bug and I don't think this can be said) and 2) forcing to query static content when the existence is on a row is inefficient and I'd rather not back that inefficient in. Anyway, the reason we get this output difference is actually the genuine bug/inefficiency from CASSANDRA-12768: we have a condition on a row, so no reason to read any static content. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na]
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15551272#comment-15551272 ] Alex Petrov commented on CASSANDRA-12694: - bq. I want to fetch all columns but only query the one from columnsToRead() In both cases ({{all(cfm)}} and {{all(cfm, columns)}}), the output is similar, with several exceptions (for example, when only static columns are used in condition or only regular columns are used: in these cases we will return only them). I've added more tests for such behaviour. Although after looking at it again I think that new output is better/more correct, as we do have a partition and now the output corresponds to that fact (in case with {{NOT EXISTS}} in tests. You're right that it's better to avoid using {{selection}}, and example with {{NOT EXISTS} kind of proves it. As with {{selection}} the output was as if partition did not exist at all, but it did exist, even though all the rows were deleted. If you think this is ok, I'll rebase the other versions, too. |[trunk|https://github.com/ifesdjeen/cassandra/tree/12694-reviewed]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-reviewed-dtest/]|[testall|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12694-reviewed-testall/]| > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15549027#comment-15549027 ] Sylvain Lebresne commented on CASSANDRA-12694: -- I'll note that my suggestion was a tiny bit different: I didn't meant to remove the {{columsToRead()}} entirely, I mean to use the variation of the {{ColumnFilter.all()}} function of my earlier comment which still takes the columns to read. The difference with using {{ColumnFilter.selection()}} using the terminology in {{ColumnFilter}} is that I want to _fetch_ all columns but only _query_ the one from {{columnsToRead()}}, while {{ColumnFilter.selection()}} only _fetch_ the columns provided (and the existing {{ColumnFilter.all()}} as used in your modification _fetch_ and _query_ all). I believe this is why you have the different output (but if it's not, I'll need to have a closer look). > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15548897#comment-15548897 ] Alex Petrov commented on CASSANDRA-12694: - re:12060, I meant that we could achieve similar results by using {{all}} and without special-casing static columns (modulo output, just as we have here now). Might be our tests do not reflect all reality, but with current behaviour I haven't found cases where it'd fail. bq. Is the problem specific to static columns maybe? Unfortunately, not. I've pushed what you have suggested [here|https://github.com/ifesdjeen/cassandra/tree/12694-reviewed] (tests reflect some changes, most likely there will be more in dtests, with three-way differences between versions). I trust your intuition, and most likely you're right: if there are no guarantees to make the distinctions, we should always use {{all}}. This also will be future proof, in case there's some other edge case hiding somewhere. I just wanted to bring up the behaviour/output change to your attention. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15548711#comment-15548711 ] Sylvain Lebresne commented on CASSANDRA-12694: -- bq. The javadoc on {{ColumnFilter}} also says that it's ok to use selection for some internal purposes, and it seems to me that this is exactly the case. Well, as luck as it, I wrote both the class and comment, and this is not a case that the comment meant to cover. The sole purpose of having different "selection" and "all columns" builders is to distinguish between the cases where you care about the difference between "the row exists but has null values for every column queried" and "the row doesn't exist" (job for the "all columns" builder) and cases where it doesn't matter (job for the "selection" builder). Unless I'm misunderstanding this ticket, the problem here is exactly that we want to make the difference between those two cases, so it should use a "all columns" builder or you're defeating the whole purpose of the {{queried}} versus {{fetched}} nuance {{ColumnFilter}} makes. bq. Problem with switching to {{allColumns}} is that we (yet again) are going to break the failure result If you could be more specific on what you mean here, that would be helpful. Is the problem specific to static columns maybe? bq. We also did not do the same change (query all columns) in CASSANDRA-12060 You're mixing different things. CASSANDRA-12060 was about checking partition existence. Which columns you read impact row existence. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15548420#comment-15548420 ] Alex Petrov commented on CASSANDRA-12694: - Thank you for the comment. The javadoc on {{ColumnFilter}} also says that it's ok to use selection for some internal purposes, and it seems to me that this is exactly the case. Problem with switching to {{allColumns}} is that we (yet again) are going to break the failure result (which is not a problem on in unit tests, but we'll have even more special-casing on LWTs in dtest code), which was exactly the reason why I've chosen changing {{columnsToRead}} instead. I have tried the approach you describe and have opted out for the current version. I went through all combinations and cases and having the mentioned conditions satisfies all the requirements and can guarantee that we know whether or not partition exists, both in case with static and partition conditions and does not break the existing behaviour of what we return on CAS failure. We also did not do the same change (query all columns) in [CASSANDRA-12060] and opted out for special-casing static columns with {{LIMIT 1}} in order to make sure that partition exists. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15548143#comment-15548143 ] Sylvain Lebresne commented on CASSANDRA-12694: -- Actually, while I'm sure the patch fixes the issue, I think it's uselessly inefficient. We shouldn't touch {{CQL3CasRequest.columnsToRead()}}, but we should change {{CQL3CasRequest.readCommand()}}, changing the {{ColumnFilter.selection(columnsToRead())}} to instead use {{ColumnFilter.allColumnsBuilder()}} and add the columns from {{ColumnsToRead()}}. Or alternatively (and probably better), add to {{ColumnFilter}}: {noformat} public static ColumnFilter all(CFMetaData metadata, PartitionColumns queried) { return new ColumnFilter(true, metadata, queried, null); } {noformat} and use that. I'll refer to the javadoc on {{ColumnFilter}} on why this is different (and better), but for the record, the rule to remember is that {{ColumnFilter.selection()}} and {{ColumnFilter.seelctionBuilder()}} should never be used for CQL code. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115)
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15548074#comment-15548074 ] Stefania commented on CASSANDRA-12694: -- The trunk patch looks OK with some nits, see this [branch|https://github.com/stef1927/cassandra/commits/12694] for a rebased version. I had minor conflicts with CASSANDRA-12060, so you may want to double check your initial commit as well, particularly the comments in {{readCommand()}}: they were removed by this patch but changed by 12060, so I left them there since they seem to make sense. As discussed offline, we still need to: * check that the logic in {{columnsToRead()}} is aligned with {{readCommand()}} * backport to 3.0 and 3.x * add a unit test > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15536170#comment-15536170 ] Alex Petrov commented on CASSANDRA-12694: - Thanks for the pointer to the commit. Although the problem was not really caused by this addition, it just got surfaced. What we expect there is correct and protects users from reading data from the corrupt SSTable. In the case of an empty row we would have liveness (which is used to distinguish empty from dead row [more details here|https://github.com/apache/cassandra/blob/cassandra-3.0/src/java/org/apache/cassandra/db/rows/Row.java#L71-L86](. What happens is that we're following a read path that reads out only the columns that are affected by the LWT (and this column was never set), which results into this check failing, since there's no liveness that would confirm that this row exists but is empty. In fact, we'll run into the same situation if we use "regular" (not LWT) update in the first place, like that: {code} update test.lwt_corruption_test set last_updated = 555 where test_id = 'test3'; update test.lwt_corruption_test set last_updated = 555 where test_id = 'test3' if message_id = null; ;; would result into the same error {code} However, running the LWT with a column that actually exists would result into successful LWT: {code} update test.lwt_corruption_test set last_updated = 555 where test_id = 'test3' if message_id = null and last_updated = 555; {code} Now, {{last_updated}} will be returned and non-empty. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek >Assignee: Alex Petrov > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at >
[jira] [Commented] (CASSANDRA-12694) PAXOS Update Corrupted empty row exception
[ https://issues.apache.org/jira/browse/CASSANDRA-12694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15527975#comment-15527975 ] Alwyn Davis commented on CASSANDRA-12694: - I think this problem is being caused by this addition: https://github.com/ifesdjeen/cassandra/commit/ef9225fea660b46ed4905c10b91e7efe2746da5b#diff-c06541855022eca5fd794dd24ff02f89 which was added for CASSANDRA-9530. In this scenario, I think the CAS check is correctly returning an empty row (the matching row has a null value) which the above change errors out on, before StorageProxy.cas can check if the row applies to the CAS conditions. I'm not sure what the impact of removing the check is, as the comment indicates that it's also repeated for compactions. > PAXOS Update Corrupted empty row exception > -- > > Key: CASSANDRA-12694 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12694 > Project: Cassandra > Issue Type: Bug > Components: Local Write-Read Paths > Environment: 3 node cluster using RF=3 running on cassandra 3.7 >Reporter: Cameron Zemek > > {noformat} > cqlsh> create table test.test (test_id TEXT, last_updated TIMESTAMP, > message_id TEXT, PRIMARY KEY(test_id)); > update test.test set last_updated = 1474494363669 where test_id = 'test1' if > message_id = null; > {noformat} > Then nodetool flush on the all 3 nodes. > {noformat} > cqlsh> update test.test set last_updated = 1474494363669 where test_id = > 'test1' if message_id = null; > ServerError: > {noformat} > From cassandra log > {noformat} > ERROR [SharedPool-Worker-1] 2016-09-23 12:09:13,179 Message.java:611 - > Unexpected exception during request; channel = [id: 0x7a22599e, > L:/127.0.0.1:9042 - R:/127.0.0.1:58297] > java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered > partition > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:224) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer$1.computeNext(UnfilteredRowIteratorSerializer.java:212) > ~[main/:na] > at > org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47) > ~[main/:na] > at > org.apache.cassandra.db.rows.UnfilteredRowIterators.digest(UnfilteredRowIterators.java:125) > ~[main/:na] > at > org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.digest(UnfilteredPartitionIterators.java:249) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse.makeDigest(ReadResponse.java:87) > ~[main/:na] > at > org.apache.cassandra.db.ReadResponse$DataResponse.digest(ReadResponse.java:192) > ~[main/:na] > at > org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:80) > ~[main/:na] > at > org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:139) > ~[main/:na] > at > org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:145) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.awaitResultsAndRetryOnDigestMismatch(StorageProxy.java:1714) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1663) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1604) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1523) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1497) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.readOne(StorageProxy.java:1491) > ~[main/:na] > at > org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:249) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:441) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:416) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)