[
https://issues.apache.org/jira/browse/CASSANDRA-20828?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18043132#comment-18043132
]
David Capwell commented on CASSANDRA-20828:
-------------------------------------------
FullAccordInteropMultiNodeTableWalkTest had seed 1919433858547286168 with a
very small history
{code}
junit.framework.AssertionFailedError: Property error detected:
Seed = 1919433858547286168
Examples = 10
Pure = true
Error: Unexpected results for query: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 969
Steps: 400
Values:
State:
Setup:
Config:
sstable:
selected_format: big
CREATE KEYSPACE IF NOT EXISTS ks4 WITH replication = {'class':
'SimpleStrategy', 'replication_factor': 3};
CREATE TYPE IF NOT EXISTS ks4."vl2uT9OG8xp_8" (
f0 boolean,
f1 ascii
);;
CREATE TABLE ks4.tbl (
pk0 uuid,
ck0 bigint,
ck1 uuid,
s0 list<frozen<"vl2uT9OG8xp_8">> static,
v0 frozen<map<frozen<map<double, int>>,
frozen<set<ascii>>>>,
PRIMARY KEY (pk0, ck0, ck1)
) WITH CLUSTERING ORDER BY (ck0 ASC, ck1 DESC)
AND additional_write_policy = '99p'
AND allow_auto_snapshot = true
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition':
'247538569'}
AND cdc = false
AND comment = ''
AND compaction = {'class':
'org.apache.cassandra.db.compaction.UnifiedCompactionStrategy',
'only_purge_repaired_tombstones': 'true', 'unchecked_tombstone_compaction':
'false'}
AND compression = {'enabled': 'false'}
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 = 'NONE'
AND transactional_mode = 'full'
AND transactional_migration_from = 'none'
AND speculative_retry = '99p';
CREATE CUSTOM INDEX tbl_ck0 ON ks4.tbl(ck0) USING
'StorageAttachedIndex';
CREATE INDEX tbl_ck1 ON ks4.tbl(ck1) USING 'SAI';
CREATE CUSTOM INDEX tbl_v0 ON ks4.tbl(FULL(v0)) USING
'StorageAttachedIndex';:
org.apache.cassandra.distributed.test.cql3.AccordInteropMultiNodeTableWalkBase.AccordInteropMultiNodeState
History:
1: BEGIN TRANSACTION INSERT INTO ks4.tbl (pk0, s0) VALUES
(00000000-0000-4100-a600-000000000000, [{f0: false, f1: '.\u000Ez'}]); COMMIT
TRANSACTION -- on node3
2: SELECT * FROM ks4.tbl PER PARTITION LIMIT 374 LIMIT 223 --
full table scan, on node2, fetch size 10
3: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 122 LIMIT 228 -- By
Partition Key, on node2, fetch size 5000
4: SELECT * FROM ks4.tbl PER PARTITION LIMIT 855 LIMIT 949 --
full table scan, on node2, fetch size 1
5: SELECT * FROM ks4.tbl WHERE token(pk0) BETWEEN
6287027248855902233 AND -9223372036854775808 PER PARTITION LIMIT 464 LIMIT 563
-- min token range, on node2, fetch size 10
6: BEGIN TRANSACTION INSERT INTO ks4.tbl (pk0, s0) VALUES
(00000000-0000-4100-a600-000000000000, [{f0: true, f1: 'm5^I\u0006Wb%s'}, {f0:
true, f1: 'F'}]); COMMIT TRANSACTION -- on node3
7: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 108 LIMIT 488 -- By
Partition Key, on node3, fetch size 1
8: SELECT * FROM ks4.tbl WHERE token(pk0) >=
token(00000000-0000-4100-a600-000000000000) AND token(pk0) <=
token(00000000-0000-4100-a600-000000000000) PER PARTITION LIMIT 197 -- by token
range, on node3, fetch size 1000
9: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 392 -- By Partition
Key, on node2, fetch size 1
10: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 669 LIMIT 829 -- By
Partition Key, on node2, fetch size 1
11: BEGIN TRANSACTION DELETE FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 AND ck0 = -9152779431934595738 *
9060953949643972180 AND ck1 = 00000000-0000-4500-b700-000000000000; COMMIT
TRANSACTION -- on node2
12: SELECT * FROM ks4.tbl WHERE token(pk0) >=
token(00000000-0000-4100-a600-000000000000) AND token(pk0) <=
token(00000000-0000-4100-a600-000000000000) PER PARTITION LIMIT 481 -- by token
range, on node1, fetch size 1000
13: SELECT * FROM ks4.tbl WHERE token(pk0) >=
token(00000000-0000-4100-a600-000000000000) AND token(pk0) <
token(00000000-0000-4100-a600-000000000000) PER PARTITION LIMIT 817 LIMIT 694
-- by token range, on node1, fetch size 10
14: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 456 -- By Partition
Key, on node1
15: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 317 -- By Partition
Key, on node3, fetch size 10
16: UPDATE ks4.tbl SET s0 += [{f0: false, f1:
'6\u000C\u001E'}], v0=null WHERE pk0 = 00000000-0000-4100-a600-000000000000
AND ck0 = -2173063491389939544 * -3650886811909497768 AND ck1 =
00000000-0000-4700-a100-000000000000 -- on node2
17: SELECT * FROM ks4.tbl WHERE pk0 =
00000000-0000-4100-a600-000000000000 PER PARTITION LIMIT 969 -- By Partition
Key, on node1, fetch size 5000
at accord.utils.Property$StatefulBuilder.check(Property.java:545)
at
org.apache.cassandra.distributed.test.cql3.SingleNodeTableWalkTest.test(SingleNodeTableWalkTest.java:367)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.AssertionError: Unexpected results for query: SELECT *
FROM ks4.tbl WHERE pk0 = 00000000-0000-4100-a600-000000000000 PER PARTITION
LIMIT 969
Caused by: java.lang.AssertionError:
Possible column conflicts:
Expected: [00000000-0000-4100-a600-000000000000, null, null, [{f0:
true, f1: 'm5^IWb%s'}, {f0: true, f1: 'F'}, {f0: false, f1: '6'}], null]
Diff (expected over actual):
s0 list<frozen<"vl2uT9OG8xp_8">>
[{f0: true, f1: 'm5^I\u0006Wb%s'}, {f0: true, f1: 'F'}, {f0: false, f1:
'6\u000C\u001E'}]
[{f0: false, f1: '6\u000C\u001E'}, {f0: true, f1: 'm5^I\u0006Wb%s'}, {f0: true,
f1: 'F'}]
{code}
the list ordering isn't correct, which this patch is meant to fix.
This seed was found in CASSANDRA-21055 which is about to merge, so the SHA that
adds that this seed should repo
> When a table is writing to accord and the mutation is a regular CQL mutation,
> if a multi cell list was written the cell path's timestamp did not reflect
> the transaction timestamp
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-20828
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20828
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Accord
> Reporter: David Capwell
> Priority: Normal
> Fix For: 6.x
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> When a list type is written in CAS or BEGIN TRANSACTION we have a custom
> Updater that defines what the cell path should be for the list type, but when
> you used regular CQL we fall back to wall clock time. We normally allow this
> in accord as we rewrite the timestamps during the write phase but the list
> cell path was not updated
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]