[ 
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]

Reply via email to