[ 
https://issues.apache.org/jira/browse/CASSANDRA-20261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ariel Weisberg updated CASSANDRA-20261:
---------------------------------------
    Test and Documentation Plan: New tests being added as part of 
CASSANDRA-20156
                         Status: Patch Available  (was: Open)

> Accord interop missing data when using token BETWEEN clause with paging
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-20261
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20261
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Accord
>            Reporter: David Capwell
>            Assignee: Ariel Weisberg
>            Priority: Normal
>             Fix For: 5.x
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> This was found by CASSANDRA-20156
> The error seen is 
> {code}
> History:
>   27: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) BETWEEN token(-32122, 
> 7789509855040785323) AND token(28586, -689252365883560887) — on node1, fetch 
> size 1
> Caused by: java.lang.AssertionError: Missing rows:
> pk0   | pk1                 | ck0       | ck1                  | s0           
>               | v0                                          | v1              
>      | v2                   | v3     | v4
> 28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' | 
> '1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' | 
> '08:14:46.465399615' | '03:07:03.151389558' | -17377 | 
> 0x00000000000016009900000000000000
> Expected:
> pk0    | pk1                 | ck0        | ck1                  | s0         
>                 | v0                                          | v1            
>        | v2                   | v3     | v4
> 28586  | -689252365883560887 | 381940688  | '01:49:42.520527694' | 
> '1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' | 
> '08:14:46.465399615' | '03:07:03.151389558' | -17377 | 
> 0x00000000000016009900000000000000
> -32122 | 7789509855040785323 | -273245539 | '22:57:17.784557626' | 
> '2020-08-10T10:02:26.981Z' | null                                        | 
> null                 | null                 | null   | null
> {code}
> Here is a test that repos the issue
> {code}
> /*
>  * Licensed to the Apache Software Foundation (ASF) under one
>  * or more contributor license agreements.  See the NOTICE file
>  * distributed with this work for additional information
>  * regarding copyright ownership.  The ASF licenses this file
>  * to you under the Apache License, Version 2.0 (the
>  * "License"); you may not use this file except in compliance
>  * with the License.  You may obtain a copy of the License at
>  *
>  *     http://www.apache.org/licenses/LICENSE-2.0
>  *
>  * Unless required by applicable law or agreed to in writing, software
>  * distributed under the License is distributed on an "AS IS" BASIS,
>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  * See the License for the specific language governing permissions and
>  * limitations under the License.
>  */
> package org.apache.cassandra.distributed.test.cql3;
> import java.io.IOException;
> import java.util.function.Consumer;
> import org.junit.Test;
> import com.datastax.driver.core.SimpleStatement;
> import org.apache.cassandra.distributed.Cluster;
> import org.apache.cassandra.distributed.api.ConsistencyLevel;
> import org.apache.cassandra.distributed.test.JavaDriverUtils;
> import org.apache.cassandra.service.consensus.TransactionalMode;
> import org.assertj.core.api.Assertions;
> public class AccordInteropRepoTest extends StatefulASTBase
> {
>     @Test
>     public void test() throws IOException
>     {
>         ConsistencyLevel selectCl = ConsistencyLevel.QUORUM;
>         ConsistencyLevel mutationCl = ConsistencyLevel.QUORUM;
>         try (Cluster cluster = createCluster(1, i -> {
>         });
>              var driver = JavaDriverUtils.create(cluster);
>              var session = driver.connect())
>         {
>             cluster.schemaChange("CREATE KEYSPACE IF NOT EXISTS ks1 WITH 
> replication = {'class': 'SimpleStrategy', 'replication_factor': 1};");
>             cluster.schemaChange("CREATE TABLE ks1.tbl (\n" +
>                                  "\t\t    pk0 smallint,\n" +
>                                  "\t\t    pk1 bigint,\n" +
>                                  "\t\t    ck0 int,\n" +
>                                  "\t\t    ck1 time,\n" +
>                                  "\t\t    s0 timestamp static,\n" +
>                                  "\t\t    v0 ascii,\n" +
>                                  "\t\t    v1 time,\n" +
>                                  "\t\t    v2 time,\n" +
>                                  "\t\t    v3 smallint,\n" +
>                                  "\t\t    v4 
> 'org.apache.cassandra.db.marshal.LexicalUUIDType',\n" +
>                                  "\t\t    PRIMARY KEY ((pk0, pk1), ck0, 
> ck1)\n" +
>                                  "\t\t) WITH CLUSTERING ORDER BY (ck0 DESC, 
> ck1 DESC) AND " + TransactionalMode.full.asCqlParam());
>             cluster.schemaChange("CREATE INDEX tbl_pk0 ON ks1.tbl(pk0) USING 
> 'SAI';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_pk1 ON ks1.tbl(pk1) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_ck0 ON ks1.tbl(ck0) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_ck1 ON ks1.tbl(ck1) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_s0 ON ks1.tbl(s0) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_v0 ON ks1.tbl(v0) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE INDEX tbl_v1 ON ks1.tbl(v1) USING 
> 'SAI';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_v2 ON ks1.tbl(v2) 
> USING 'StorageAttachedIndex';");
>             cluster.schemaChange("CREATE CUSTOM INDEX tbl_v3 ON ks1.tbl(v3) 
> USING 'StorageAttachedIndex';");
>             cluster.forEach(i -> i.nodetoolResult("disableautocompaction", 
> "ks1", "tbl").asserts().success());
>             Consumer<String> write = cql -> 
> cluster.coordinator(1).execute(cql, mutationCl);
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, 
> v1, v2, v3, v4) VALUES (-17452, -6103194810008652995, -354072026 + 
> 1793215453, '23:19:05.460737920', '2014-01-21T10:53:28.054Z', 
> '\\u001BH\\u007F', '07:17:36.531643764', '06:45:54.792974856', -1158 + 19412, 
> 0x0000000000004c00a200000000000000)");
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, 
> v1, v2, v3, v4) VALUES (26923, -8466366874082863244, 1879756201 * 419234983, 
> '11:47:28.493772899', '2022-08-28T18:51:39.439Z', 
> '?T0\\u000Fw\\u000C7\\u0010`', '20:26:38.241088346', '20:23:19.706516131', 
> -9817, 0x00000000000011008600000000000000)");
>             write.accept("UPDATE ks1.tbl SET s0='2063-02-08T21:19:42.290Z', 
> v0='Nk0D\\u0012\\u0004', v1='01:25:12.540180030', v2='16:26:46.736998227', 
> v3=28123, v4=0x0000000000004e00bf00000000000000 WHERE  pk0 = -8659 AND  pk1 = 
> 8543055738605711691 AND  ck0 = -1156127192 * -1114559982 AND  ck1 = 
> '20:39:13.541952208'");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = 26923 AND  pk1 = 
> -8466366874082863244 AND  ck0 = -1585009096 - 582726325 AND  ck1 = 
> '06:37:47.310859750'");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = -2508 AND  pk1 = 
> -5268494056692095125");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = 28586 AND  pk1 = 
> -689252365883560887");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = -17452 AND  pk1 = 
> -6103194810008652995");
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, v0, v1, 
> v2) VALUES (-8659, 8543055738605711691, -965580267 - -349362501, 
> '13:13:21.358675464', '\\u0013P' + ')0R\\u0008[U\\u0002\\u000C', 
> '00:22:58.129668768', '19:49:09.962483656')");
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0, v0, 
> v1, v2, v3, v4) VALUES (-8659, 8543055738605711691, -1879407340, 
> '20:38:24.079426657', '1976-06-15T16:22:29.714Z', '\\u0001' + 
> '\\u0002g8\\u0017\\u0000kl', '23:44:14.518757788', '02:54:00.877709004', 
> -26658, 0x0000000000001200b300000000000000)");
>             write.accept("UPDATE ks1.tbl SET s0='2033-12-12T19:40:35.649Z', 
> v0='v`.?\\u0000\\u0014' + '[1M\\u0019eF7', v1='09:28:48.224043017', 
> v2='14:44:17.130879183', v3=-8918, v4=0x0000000000004600ae00000000000000 
> WHERE  pk0 = -8659 AND  pk1 = 8543055738605711691 AND  ck0 = 388614112 AND  
> ck1 = '03:05:25.312567300'");
>             write.accept("UPDATE ks1.tbl SET v1='09:36:18.985071344' WHERE  
> pk0 = 15987 AND  pk1 = 5017545377567663076 AND  ck0 = -1647371007 + 
> -564597002 AND  ck1 = '18:07:46.525252651'");
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, s0) VALUES 
> (-32122, 7789509855040785323, -273245539, '22:57:17.784557626', 
> '2020-08-10T10:02:26.981Z')");
>             write.accept("INSERT INTO ks1.tbl (pk0, pk1, ck0, ck1, v0) VALUES 
> (26923, -8466366874082863244, -1931533321 - 392089785, '02:30:47.533658323', 
> 'fL\" ')");
>             write.accept("UPDATE ks1.tbl SET v0=',''.\\u0009' + '}', 
> v1='03:06:20.331155886', v2='19:12:05.972164203', v3=21166 * 22367, 
> v4=0x0000000000001500b200000000000000, s0='2055-12-07T12:03:29.428Z' WHERE  
> pk0 = -14794 AND  pk1 = 8575482787026083770 AND  ck0 = -1572042742 * 
> 1166090660 AND  ck1 = '13:31:07.217959809'");
>             write.accept("UPDATE ks1.tbl SET v0='kC^\\u001A2' + 
> '\\u001C66nw7/', v1='00:14:42.540873077', v2='13:40:25.648481128', v3=-31029 
> * -24644, v4=0x0000000000004a009200000000000000, 
> s0='2059-07-29T20:06:04.031Z' WHERE  pk0 = 26923 AND  pk1 = 
> -8466366874082863244 AND  ck0 = 1632828752 AND  ck1 = '22:24:59.313920070'");
>             write.accept("UPDATE ks1.tbl SET v0='=\\u0019Z' + 
> '\\u0004\\u007F\\u00029\\u0011SF\\u0009', v1='08:14:46.465399615', 
> v2='03:07:03.151389558', v3=-28611 + 11234, 
> v4=0x00000000000016009900000000000000, s0='1976-09-08T16:06:37.234Z' WHERE  
> pk0 = 28586 AND  pk1 = -689252365883560887 AND  ck0 = 381940688 AND  ck1 = 
> '01:49:42.520527694'");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = -14794 AND  pk1 = 
> 8575482787026083770 AND  ck0 = -1969142593 * -1928185285 AND  ck1 = 
> '06:27:48.954717326'");
>             write.accept("DELETE FROM ks1.tbl WHERE  pk0 = 28586 AND  pk1 = 
> -689252365883560887 AND  ck0 = 397777120 - -1843773161 AND  ck1 = 
> '23:32:54.375819231'");
>             SimpleStatement stmt = new SimpleStatement("SELECT * FROM ks1.tbl 
> WHERE token(pk0, pk1) BETWEEN token(-32122, 7789509855040785323) AND 
> token(28586, -689252365883560887)");
>             stmt.setConsistencyLevel(JavaDriverUtils.toDriverCL(selectCl));
>             stmt.setFetchSize(1);
>             var result = 
> StatefulASTBase.BaseState.getRowsAsByteBuffer(session.execute(stmt));
>             /*
> Caused by: java.lang.AssertionError: Missing rows:
> pk0   | pk1                 | ck0       | ck1                  | s0           
>               | v0                                          | v1              
>      | v2                   | v3     | v4
> 28586 | -689252365883560887 | 381940688 | '01:49:42.520527694' | 
> '1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' | 
> '08:14:46.465399615' | '03:07:03.151389558' | -17377 | 
> 0x00000000000016009900000000000000
> Expected:
> pk0    | pk1                 | ck0        | ck1                  | s0         
>                 | v0                                          | v1            
>        | v2                   | v3     | v4
> 28586  | -689252365883560887 | 381940688  | '01:49:42.520527694' | 
> '1976-09-08T16:06:37.234Z' | '=\u0019Z\u0004\u007F\u00029\u0011SF\u0009' | 
> '08:14:46.465399615' | '03:07:03.151389558' | -17377 | 
> 0x00000000000016009900000000000000
> -32122 | 7789509855040785323 | -273245539 | '22:57:17.784557626' | 
> '2020-08-10T10:02:26.981Z' | null                                        | 
> null                 | null                 | null   | null
>              */
>             Assertions.assertThat(result).hasDimensions(2, 10);
>         }
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to