[
https://issues.apache.org/jira/browse/CASSANDRA-10266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14741690#comment-14741690
]
Blake Eggleston commented on CASSANDRA-10266:
---------------------------------------------
The linked branch adds unit tests for {{Rows}}, as well as a test for
{{Cells.reconcileComplex}}, which wasn't tested previously.
I found a bug in {{Rows.diff}} where complex deletion info would be discarded
if both rows had column data for the same collection column. This created a
DataResolver bug for collection columns that could cause multiple overwrites to
merge together after a read repair
For instance, on a 3 node cluster, with the table {{CREATE TABLE numbers (k INT
PRIMARY KEY, m MAP<INT, INT>);}}, and updates:
{code}
UPDATE numbers SET m={0:0} WHERE k=0; // is received by all nodes
UPDATE numbers SET m={1:1} WHERE k=0; // is only received by node A
{code}
a quorum read including node A would initially return {{1:1}} for m. However, a
read repair would only send the cell for {{1:1}}, not the complex delete, so
subsequent reads not including node A would return {{0:0, 1:1}}.
I've fixed the bug
[here|https://github.com/bdeggleston/cassandra/blob/10266R/src/java/org/apache/cassandra/db/rows/Rows.java#L185],
and added a few DataResolver tests that test collection columns.
> Introduce direct unit test coverage for Rows
> --------------------------------------------
>
> Key: CASSANDRA-10266
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10266
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Benedict
> Assignee: Blake Eggleston
> Fix For: 3.0.0 rc1
>
>
> As with much of the codebase, we have no direct unit test coverage for
> {{Rows}}, and we should remedy this given how central it is to behaviour.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)