[
https://issues.apache.org/jira/browse/CASSANDRA-20262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17922241#comment-17922241
]
David Capwell commented on CASSANDRA-20262:
-------------------------------------------
Spoke with Ariel in slack and got this failing in the existing tests as well
{code}
diff --git
a/test/distributed/org/apache/cassandra/distributed/test/accord/InteropTokenRangeTest.java
b/test/distributed/org/apache/cassandra/distributed/test/accord/InteropTokenRangeTest.java
index 4afe1fa28f..47f2402590 100644
---
a/test/distributed/org/apache/cassandra/distributed/test/accord/InteropTokenRangeTest.java
+++
b/test/distributed/org/apache/cassandra/distributed/test/accord/InteropTokenRangeTest.java
@@ -40,6 +40,7 @@ import org.apache.cassandra.dht.Range;
import org.apache.cassandra.dht.Token;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ICoordinator;
+import org.apache.cassandra.distributed.api.QueryResult;
import org.apache.cassandra.distributed.api.SimpleQueryResult;
import org.apache.cassandra.distributed.test.TestBaseImpl;
import org.apache.cassandra.service.consensus.TransactionalMode;
@@ -93,6 +94,10 @@ public class InteropTokenRangeTest extends TestBaseImpl
Assertions.assertThat(tokens(node.executeWithResult(withKeyspace("SELECT * FROM
%s.tbl WHERE " + op.condition), QUORUM, pk)))
.describedAs("Token %d with operator %s", token,
op.condition)
.isEqualTo(op.expected(token, tokens));
+
+
Assertions.assertThat(tokens(node.executeWithPagingWithResult(withKeyspace("SELECT
* FROM %s.tbl WHERE " + op.condition), QUORUM, 1, pk)))
+ .describedAs("Token %d with operator %s", token,
op.condition)
+ .isEqualTo(op.expected(token, tokens));
}
for (TokenOperator lt : Arrays.asList(TokenOperator.lt,
TokenOperator.lte))
@@ -112,7 +117,7 @@ public class InteropTokenRangeTest extends TestBaseImpl
}
}
- public static NavigableSet<Long> tokens(SimpleQueryResult result)
+ public static NavigableSet<Long> tokens(QueryResult result)
{
NavigableSet<Long> set = new TreeSet<>();
while (result.hasNext())
{code}
The problem is paging...
> Accord interop token equality query fails with bound check
> ----------------------------------------------------------
>
> Key: CASSANDRA-20262
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20262
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Accord
> Reporter: David Capwell
> Assignee: Ariel Weisberg
> Priority: Normal
> Fix For: 5.x
>
>
> This was found by CASSANDRA-20156
> {code}
> State:
> Setup:
> CREATE KEYSPACE IF NOT EXISTS ks1 WITH replication = {'class':
> 'SimpleStrategy', 'replication_factor': 1};
> CREATE TABLE ks1.tbl (
> pk0 tinyint,
> pk1 time,
> ck0 boolean,
> s0 inet static,
> v0 inet,
> PRIMARY KEY ((pk0, pk1), ck0)
> ) WITH CLUSTERING ORDER BY (ck0 ASC)
> AND additional_write_policy = '99p'
> AND allow_auto_snapshot = true
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND cdc = false
> AND comment = ''
> AND compaction = {'class':
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '16', 'class':
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND memtable = 'default'
> AND crc_check_chance = 1.0
> AND fast_path = 'keyspace'
> AND default_time_to_live = 0
> AND extensions = {}
> AND gc_grace_seconds = 864000
> AND incremental_backups = true
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair = 'BLOCKING'
> AND transactional_mode = 'full'
> AND transactional_migration_from = 'none'
> AND speculative_retry = '99p';
> CREATE INDEX tbl_pk0 ON ks1.tbl(pk0) USING 'SAI';
> CREATE INDEX tbl_pk1 ON ks1.tbl(pk1) USING 'SAI';
> CREATE CUSTOM INDEX tbl_ck0 ON ks1.tbl(ck0) USING
> 'StorageAttachedIndex';
> CREATE INDEX tbl_s0 ON ks1.tbl(s0) USING 'SAI';
> CREATE CUSTOM INDEX tbl_v0 ON ks1.tbl(v0) USING
> 'StorageAttachedIndex';:
> org.apache.cassandra.distributed.test.cql3.AccordInteropSingleNodeTableWalkTest.AccordInteropState
> History:
> 1: INSERT INTO ks1.tbl (pk0, pk1, ck0, s0, v0) VALUES (101,
> '14:21:13.188790094', true, '56.151.240.130', '78.156.239.106') -- on node1
> 2: DELETE FROM ks1.tbl WHERE pk0 = -94 AND pk1 =
> '13:01:51.099235102' AND ck0 = false -- on node1
> 3: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) = token(101,
> '14:21:13.188790094') -- by token, on node1, fetch size 1
> 4: SELECT * FROM ks1.tbl WHERE pk1 = '14:21:13.188790094' AND
> ck0 = true AND pk0 = 101 ALLOW FILTERING -- pk1 time (indexed with SAI), ck0
> boolean (indexed with SAI), pk0 tinyint (indexed with SAI), on node1, fetch
> size 5000
> 5: UPDATE ks1.tbl SET v0='129.167.56.66',
> s0='c743:a2c4:9dcc:ef0c:bc6b:421c:4fd4:d506' WHERE pk0 = -24 AND pk1 =
> '04:40:54.482608170' AND ck0 = true -- on node1
> 6: INSERT INTO ks1.tbl (pk0, pk1, ck0, s0) VALUES (-94,
> '13:01:51.099235102', false, '133.161.178.231') -- on node1
> 7: SELECT * FROM ks1.tbl WHERE pk0 = 101 AND s0 =
> '56.151.240.130' ALLOW FILTERING -- pk0 tinyint (indexed with SAI), s0 inet
> (indexed with SAI), on node1, fetch size 1
> 8: DELETE FROM ks1.tbl WHERE pk0 = -94 AND pk1 =
> '13:01:51.099235102' AND ck0 = false -- on node1
> 9: SELECT * FROM ks1.tbl WHERE pk0 = 101 AND pk1 =
> '14:21:13.188790094' ALLOW FILTERING -- pk0 tinyint (indexed with SAI), pk1
> time (indexed with SAI), on node1, fetch size 10
> 10: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) = token(-24,
> '04:40:54.482608170') -- by token, on node1, fetch size 1
> 11: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) = token(-24,
> '04:40:54.482608170') -- by token, on node1, fetch size 1
> 12: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) = token(-94,
> '13:01:51.099235102') -- by token, on node1, fetch size 1000
> 13: SELECT * FROM ks1.tbl WHERE s0 = '56.151.240.130' AND pk1 =
> '14:21:13.188790094' ALLOW FILTERING -- s0 inet (indexed with SAI), pk1 time
> (indexed with SAI), on node1, fetch size 10
> 14: SELECT * FROM ks1.tbl WHERE s0 =
> 'c743:a2c4:9dcc:ef0c:bc6b:421c:4fd4:d506' AND v0 = '78.156.239.106' AND ck0 =
> true AND pk0 = -24 ALLOW FILTERING -- s0 inet (indexed with SAI), v0 inet
> (indexed with SAI), ck0 boolean (indexed with SAI), pk0 tinyint (indexed with
> SAI), on node1, fetch size 1
> 15: UPDATE ks1.tbl SET
> v0='e032:ceaf:d069:bb65:45ad:297a:6bf5:7f5' WHERE pk0 = 57 AND pk1 =
> '21:21:22.571524538' AND ck0 = false -- on node1
> 16: SELECT * FROM ks1.tbl WHERE token(pk0, pk1) = token(-94,
> '13:01:51.099235102') -- by token, on node1, fetch size 1
> {code}
> Error
> {code}
> INFO [node1_Native-Transport-Requests-2] 2025-01-29 15:11:00,681
> SubstituteLogger.java:169 - ERROR [node1_Native-Transport-Requests-2] node1
> 2025-01-29 15:11:00,681 ErrorMessage.java:457 - Unexpected exception during
> request
> java.lang.IllegalArgumentException:
> 1b255f4d-ef25-40a6-0000-000000000005:939701389380799159 >=
> 1b255f4d-ef25-40a6-0000-000000000005:939701389380799159
> at accord.primitives.Range.<init>(Range.java:212)
> at accord.primitives.Range$EndInclusive.<init>(Range.java:44)
> at
> org.apache.cassandra.service.accord.TokenRange.<init>(TokenRange.java:46)
> at
> org.apache.cassandra.service.accord.TokenRange.create(TokenRange.java:54)
> at
> org.apache.cassandra.service.accord.txn.TxnNamedRead.boundsAsAccordRange(TxnNamedRead.java:127)
> at
> org.apache.cassandra.service.accord.txn.TxnNamedRead.<init>(TxnNamedRead.java:135)
> at
> org.apache.cassandra.service.accord.txn.TxnRead.createRangeRead(TxnRead.java:167)
> at
> org.apache.cassandra.service.StorageProxy.readWithAccord(StorageProxy.java:2199)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.executeAccord(RangeCommandIterator.java:199)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.query(RangeCommandIterator.java:266)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.lambda$sendNextRequests$0(RangeCommandIterator.java:347)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator$2.<init>(RangeCommandIterator.java:382)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.retryingPartitionIterator(RangeCommandIterator.java:379)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.sendNextRequests(RangeCommandIterator.java:348)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.computeNext(RangeCommandIterator.java:138)
> at
> org.apache.cassandra.service.reads.range.RangeCommandIterator.computeNext(RangeCommandIterator.java:73)
> at
> org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47)
> at
> org.apache.cassandra.db.transform.BasePartitions.hasNext(BasePartitions.java:90)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:1050)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:633)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:607)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:402)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:152)
> at
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:287)
> at
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:382)
> at
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:369)
> at
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:117)
> {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]