Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Documentation
-
Critical
-
Low Hanging Fruit
-
User Report
-
All
-
None
-
Description
Reported in Slack: https://the-asf.slack.com/archives/C0459N9R5C6/p1712831271287869
The “accord_demo.txt” has the following
ccm create accord-cql-poc -n 3 ccm start bin/cqlsh -e "create keyspace ks with replication={'class':'SimpleStrategy', 'replication_factor':3};" bin/cqlsh -e "create table ks.tbl1 (k int primary key, v int);" bin/cqlsh -e "create table ks.tbl2 (k int primary key, v int);" bin/nodetool -h 0000:0000:0000:0000:0000:ffff:7f00:0001 -p 7100 createepochunsafe bin/nodetool -h 0000:0000:0000:0000:0000:ffff:7f00:0001 -p 7200 createepochunsafe bin/nodetool -h 0000:0000:0000:0000:0000:ffff:7f00:0001 -p 7300 createepochunsafe BEGIN TRANSACTION LET row1 = (SELECT * FROM ks.tbl1 WHERE k = 1); SELECT row1.v; IF row1 IS NULL THEN INSERT INTO ks.tbl1 (k, v) VALUES (1, 2); END IF COMMIT TRANSACTION;
If you run that it fails in an unclear way
cqlsh> BEGIN TRANSACTION ... LET row1 = (SELECT * FROM ks.tbl1 WHERE k = 1); ... SELECT row1.v; ... IF row1 IS NULL THEN ... INSERT INTO ks.tbl1 (k, v) VALUES (1, 2); ... END IF ... COMMIT TRANSACTION; NoHostAvailable: ('Unable to complete the operation against any hosts', {<Host: 127.0.0.1:9042 datacenter1>: <Error from server: code=0000 [Server error] message="java.lang.IllegalStateException: Unable to select a HomeKey as the topology does not have any ranges for epoch 17">})
The issue is that the table was not marked as an Accord table; aka missing
WITH transactional_mode='full'
The demo should be updated to show this, but the error message should also be improved. We validate that the table exists but now that the metadata is required we should also enforce this in CQL validation
Attachments
Issue Links
- links to