You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alwyn Davis (JIRA)" <ji...@apache.org> on 2016/09/28 01:06:20 UTC

[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&focusedCommentId=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: <ErrorMessage code=0000 [Server error] message="java.io.IOError: java.io.IOException: Corrupt empty row found in unfiltered partition">
> {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)