cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ariel Weisberg (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-10438) Overwrites of rows in memtable produce incorrect deltas for indexing
Date Tue, 06 Oct 2015 18:49:27 GMT


Ariel Weisberg commented on CASSANDRA-10438:

Unless I am mistaken I can revert the fix to onPrimaryKeyLivenessInfo and the test still passes?

The fix itself and the description of the bug make sense to me. The test is convincing in
that it checks the contents of the update case. I'm just not sure about onPrimaryKeyLivenessInfo.

I looked at the cassci results. org.apache.cassandra.cql3.validation.operations.CreateTest.testCQL3PartitionKeyOnlyTable
is unusual, but I didn't reproduce it.

> Overwrites of rows in memtable produce incorrect deltas for indexing
> --------------------------------------------------------------------
>                 Key: CASSANDRA-10438
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sam Tunnicliffe
>            Assignee: Sam Tunnicliffe
>             Fix For: 3.0.0 rc2
> When a row in the memtable is updated, the delta is supplied to any registered indexer.
This consists of two {{Row}} objects, representing the old and new data in the memtable. As
per its javadoc, the contract of {{Index.Indexer::updateRow}} is that these old & new
rows contain only the changed columns, so any column which was not affected by the update
will appear in neither the new nor old row. The {{RowDiffListener::onCell}} method in {{SecondaryIndexManager.WriteTimeTransaction::onUpdated}}
which produces these deltas uses a reference equality check, where it should be checking object
equality. This results in unchanged, prexisting cells appearing in the {{toInsert}} row.

This message was sent by Atlassian JIRA

View raw message