[ 
https://issues.apache.org/jira/browse/CASSANDRA-16307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17281001#comment-17281001
 ] 

Sam Tunnicliffe commented on CASSANDRA-16307:
---------------------------------------------

Looks good to me, assuming that you're planning to include the logic inversion 
patch on the 3.11 branch too. One minor nit is the naming of the new methods. 
They feel slightly off because counters/limits don't have content, so maybe a 
better options could be:

{{maybeUnderCounted / maybeUnderCountedForPartition}} or {{maybeShort / 
maybeShortForPartition}} ?

> GROUP BY queries with paging can return deleted data
> ----------------------------------------------------
>
>                 Key: CASSANDRA-16307
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16307
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Consistency/Coordination
>            Reporter: Andres de la Peña
>            Assignee: Alex Petrov
>            Priority: Normal
>             Fix For: 3.11.x, 4.0-beta
>
>
> {{GROUP BY}} queries using paging and CL>ONE/LOCAL_ONE. This dtest reproduces 
> the problem:
> {code:java}
> try (Cluster cluster = init(Cluster.create(2)))
> {
>     cluster.schemaChange(withKeyspace("CREATE TABLE %s.t (pk int, ck int, 
> PRIMARY KEY (pk, ck))"));
>     ICoordinator coordinator = cluster.coordinator(1);
>     coordinator.execute(withKeyspace("INSERT INTO %s.t (pk, ck) VALUES (0, 
> 0)"), ConsistencyLevel.ALL);
>     coordinator.execute(withKeyspace("INSERT INTO %s.t (pk, ck) VALUES (1, 
> 1)"), ConsistencyLevel.ALL);
>     
>     cluster.get(1).executeInternal(withKeyspace("DELETE FROM %s.t WHERE pk=0 
> AND ck=0"));
>     cluster.get(2).executeInternal(withKeyspace("DELETE FROM %s.t WHERE pk=1 
> AND ck=1"));
>     String query = withKeyspace("SELECT * FROM %s.t GROUP BY pk");
>     Iterator<Object[]> rows = coordinator.executeWithPaging(query, 
> ConsistencyLevel.ALL, 1);
>     assertRows(Iterators.toArray(rows, Object[].class));
> }
> {code}
> Using a 2-node cluster and RF=2, the test inserts two partitions in both 
> nodes. Then it locally deletes each row in a separate node, so each node sees 
> a different partition alive, but reconciliation should produce no alive 
> partitions. However, a {{GROUP BY}} query using a page size of 1 wrongly 
> returns one of the rows.
> This has been detected during CASSANDRA-16180, and it is probably related to 
> CASSANDRA-15459, which solved a similar problem for group-by queries with 
> limit, instead of paging.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to