[
https://issues.apache.org/jira/browse/CASSANDRA-20108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17902399#comment-17902399
]
David Capwell commented on CASSANDRA-20108:
-------------------------------------------
another, but far more detailed, history.
{code}
accord.utils.Property$PropertyError: Property error detected:
Seed = 3447518471140609194
Examples = 10
Pure = true
Error: Cassandra failure during read query at consistency QUORUM (1 responses
were required but only 0 replica responded, 1 failed)
Steps: 400
Values:
State:
Setup:
CREATE KEYSPACE "x1_SeU8qiZrWnjGfKEuBqWMWAP3" WITH replication
= {'class': 'SimpleStrategy', 'replication_factor': 1};
CREATE TABLE "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl (
pk0 'org.apache.cassandra.db.marshal.LexicalUUIDType',
pk1 int,
ck0 'org.apache.cassandra.db.marshal.LexicalUUIDType',
s0 ascii static,
s1 tinyint static,
v0 double,
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 = 'off'
AND transactional_migration_from = 'none'
AND speculative_retry = '99p';
:
org.apache.cassandra.distributed.test.SingleNodeTableWalkTest.State
History:
1: DELETE FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
pk0=0x0000000000001700ac00000000000000 AND pk1=-535839747
2: nodetool flush x1_SeU8qiZrWnjGfKEuBqWMWAP3 tbl
3: DELETE FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
pk0=0x0000000000001d008600000000000000 AND pk1=923072059
4: nodetool flush x1_SeU8qiZrWnjGfKEuBqWMWAP3 tbl
5: UPDATE "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl SET s1=-93, s0=''
+ '_ _ZD', v0=8.163858081481932E49 WHERE
pk0=0x0000000000004000ae00000000000000 AND pk1=-1106385971 AND
ck0=0x0000000000004700af00000000000000
6: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) = token(0x0000000000004000ae00000000000000, -1106385971); -- by
token
7: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk1 >
-1106385971 ALLOW FILTERING; -- pk1 int
8: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk1 =
-1106385971 ALLOW FILTERING; -- pk1 int
9: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971; -- Whole Partition
10: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) >= token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) < token(0x0000000000004000ae00000000000000, -1106385971); -- by
token range
11: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE s0 >=
'_ _ZD' ALLOW FILTERING; -- s0 ascii
12: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971 AND ck0 =
0x0000000000004700af00000000000000; -- Single Row
13: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971; -- Whole Partition
14: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 ALLOW FILTERING; -- pk0
'org.apache.cassandra.db.marshal.LexicalUUIDType'
15: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971 AND ck0 =
0x0000000000004700af00000000000000; -- Single Row
16: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) > token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) <= token(0x0000000000004000ae00000000000000, -1106385971); --
by token range
17: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE ck0
<= 0x0000000000004700af00000000000000 ALLOW FILTERING; -- ck0
'org.apache.cassandra.db.marshal.LexicalUUIDType'
18: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE v0 =
8.163858081481932E49 ALLOW FILTERING; -- v0 double
19: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) > token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) < token(0x0000000000004000ae00000000000000, -1106385971); -- by
token range
20: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE ck0 =
0x0000000000004700af00000000000000 ALLOW FILTERING; -- ck0
'org.apache.cassandra.db.marshal.LexicalUUIDType'
21: DELETE s1, s0, v0 FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl
WHERE pk0=0x0000000000001700ac00000000000000 AND pk1=-535839747 AND
ck0=0x0000000000001a009700000000000000
22: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0
<= 0x0000000000004000ae00000000000000 ALLOW FILTERING; -- pk0
'org.apache.cassandra.db.marshal.LexicalUUIDType'
23: DELETE FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
pk0=0x0000000000001700ac00000000000000 AND pk1=-535839747 AND
ck0=0x0000000000004f00a900000000000000
24: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) > token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) < token(0x0000000000004000ae00000000000000, -1106385971); -- by
token range
25: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) = token(0x0000000000004000ae00000000000000, -1106385971); -- by
token
26: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE s0 <=
'_ _ZD' ALLOW FILTERING; -- s0 ascii
27: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE ck0 >
0x0000000000004700af00000000000000 ALLOW FILTERING; -- ck0
'org.apache.cassandra.db.marshal.LexicalUUIDType'
28: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) >= token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) < token(0x0000000000004000ae00000000000000, -1106385971); -- by
token range
29: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) = token(0x0000000000004000ae00000000000000, -1106385971); -- by
token
30: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) > token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) <= token(0x0000000000004000ae00000000000000, -1106385971); --
by token range
31: nodetool flush x1_SeU8qiZrWnjGfKEuBqWMWAP3 tbl
32: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE s0 =
'_ _ZD' ALLOW FILTERING; -- s0 ascii
33: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971; -- Whole Partition
34: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) = token(0x0000000000004000ae00000000000000, -1106385971); -- by
token
35: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE
token(pk0, pk1) > token(0x0000000000004000ae00000000000000, -1106385971) AND
token(pk0, pk1) < token(0x0000000000004000ae00000000000000, -1106385971); -- by
token range
36: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971 AND ck0 =
0x0000000000004700af00000000000000; -- Single Row
37: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE pk0 =
0x0000000000004000ae00000000000000 AND pk1 = -1106385971; -- Whole Partition
38: SELECT * FROM "x1_SeU8qiZrWnjGfKEuBqWMWAP3".tbl WHERE s1 <
-93 ALLOW FILTERING; -- s1 tinyint
at accord.utils.Property$StatefulBuilder.check(Property.java:504)
at
org.apache.cassandra.distributed.test.SingleNodeTableWalkTest.test(SingleNodeTableWalkTest.java:295)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at
com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at
com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at
com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at
com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Suppressed: org.apache.cassandra.distributed.shared.ShutdownException:
Uncaught exceptions were thrown during test
at
org.apache.cassandra.distributed.impl.AbstractCluster.checkAndResetUncaughtExceptions(AbstractCluster.java:1184)
at
org.apache.cassandra.distributed.impl.AbstractCluster.close(AbstractCluster.java:1169)
at
org.apache.cassandra.distributed.test.SingleNodeTableWalkTest.test(SingleNodeTableWalkTest.java:290)
... 26 more
Suppressed: java.lang.RuntimeException:
java.lang.IndexOutOfBoundsException
at
org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2989)
at
org.apache.cassandra.concurrent.ExecutionFailure$2.run(ExecutionFailure.java:163)
at
org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:143)
at
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IndexOutOfBoundsException
at java.base/java.nio.Buffer.checkIndex(Buffer.java:687)
at
java.base/java.nio.HeapByteBuffer.get(HeapByteBuffer.java:169)
at
org.apache.cassandra.db.marshal.ByteBufferAccessor.getByte(ByteBufferAccessor.java:184)
at
org.apache.cassandra.db.marshal.ByteBufferAccessor.getByte(ByteBufferAccessor.java:42)
at
org.apache.cassandra.db.marshal.ByteType.compareCustom(ByteType.java:51)
at
org.apache.cassandra.db.marshal.AbstractType.compare(AbstractType.java:216)
at
org.apache.cassandra.db.marshal.AbstractType.compare(AbstractType.java:211)
at
org.apache.cassandra.db.marshal.AbstractType.compareForCQL(AbstractType.java:269)
at
org.apache.cassandra.cql3.Operator$2.isSatisfiedBy(Operator.java:130)
at
org.apache.cassandra.db.filter.RowFilter$SimpleExpression.isSatisfiedBy(RowFilter.java:725)
at
org.apache.cassandra.db.filter.RowFilter$1.applyToPartition(RowFilter.java:227)
at
org.apache.cassandra.db.transform.BasePartitions.hasNext(BasePartitions.java:94)
at
org.apache.cassandra.db.partitions.UnfilteredPartitionIterators$Serializer.serialize(UnfilteredPartitionIterators.java:334)
at
org.apache.cassandra.db.ReadResponse$LocalDataResponse.build(ReadResponse.java:208)
at
org.apache.cassandra.db.ReadResponse$LocalDataResponse.<init>(ReadResponse.java:193)
at
org.apache.cassandra.db.ReadResponse.createDataResponse(ReadResponse.java:50)
at
org.apache.cassandra.db.ReadCommand.createResponse(ReadCommand.java:401)
at
org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:2587)
at
org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2985)
... 4 more
{code}
> IndexOutOfBoundsException when accessing partition where the column was
> deleted
> -------------------------------------------------------------------------------
>
> Key: CASSANDRA-20108
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20108
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Legacy/CQL
> Reporter: David Capwell
> Assignee: Sunil Ramchandra Pawar
> Priority: Normal
> Fix For: 5.x
>
>
> {code}
> Caused by: java.lang.IndexOutOfBoundsException
> at java.base/java.nio.Buffer.checkIndex(Buffer.java:687)
> at java.base/java.nio.HeapByteBuffer.get(HeapByteBuffer.java:169)
> at
> org.apache.cassandra.db.marshal.ByteBufferAccessor.getByte(ByteBufferAccessor.java:184)
> at
> org.apache.cassandra.db.marshal.ByteBufferAccessor.getByte(ByteBufferAccessor.java:42)
> at
> org.apache.cassandra.db.marshal.ByteType.compareCustom(ByteType.java:51)
> at
> org.apache.cassandra.db.marshal.AbstractType.compare(AbstractType.java:216)
> at
> org.apache.cassandra.db.marshal.AbstractType.compare(AbstractType.java:211)
> at
> org.apache.cassandra.db.marshal.AbstractType.compareForCQL(AbstractType.java:269)
> at org.apache.cassandra.cql3.Operator$1.isSatisfiedBy(Operator.java:73)
> at
> org.apache.cassandra.db.filter.RowFilter$SimpleExpression.isSatisfiedBy(RowFilter.java:725)
> at
> org.apache.cassandra.db.filter.RowFilter$1.applyToPartition(RowFilter.java:227)
> at
> org.apache.cassandra.db.transform.BasePartitions.hasNext(BasePartitions.java:94)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:1045)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:629)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:665)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.executeLocally(SelectStatement.java:635)
> at
> org.apache.cassandra.cql3.statements.SelectStatement.executeLocally(SelectStatement.java:151)
> {code}
> Table
> {code}
> CREATE TABLE keyspace_test_00."3W56TBuMmC11vPVxalpse84eS" (
> pk0 date,
> pk1 double,
> ck0 int,
> ck1 inet,
> s0 tinyint static,
> v0 int,
> v1 varint,
> v2 varint,
> v3 timestamp,
> PRIMARY KEY ((pk0, pk1), ck0, ck1)
> ) WITH CLUSTERING ORDER BY (ck0 DESC, ck1 ASC)
> {code}
> The query
> {code}
> SELECT *
> FROM keyspace_test_00."3W56TBuMmC11vPVxalpse84eS"
> WHERE s0 = ? —- value is "(byte) -113"
> ALLOW FILTERING
> {code}
> The issue is that we see the delete, but don’t properly handle null data
> {code}
> ByteBuffer foundValue = getValue(metadata, partitionKey, row);
> // value is java.nio.HeapByteBuffer[pos=0 lim=0 cap=0]; aka null (empty)
> {code}
> History of operations on this partition
> {code}
> History:
> 1: UPDATE pd0
> 2: Select Whole Partition pd0
> 4: Select Whole Partition pd0
> 6: Delete COLUMN [s0, v0, v1, v2, v3] pd0
> 7: Select Whole Partition pd0
> 10: Select Whole Partition pd0
> 12: Select Row pd0
> 17: Delete COLUMN [s0, v0, v1, v2, v3] pd0
> 20: INSERT pd0
> 27: UPDATE pd0
> 38: INSERT pd0
> 41: Select Row pd0
> 56: Select Row pd0
> 66: Delete COLUMN [s0, v0, v1, v2, v3] pd0
> 67: Search on column s0
> {code}
> Here we see an insert was done so liveness info is generated, but we do
> delete on all columns leaving only the partition/clustering keys around...
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]