[ 
https://issues.apache.org/jira/browse/CASSANDRA-21728?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18124723#comment-18124723
 ] 

Benedict Elliott Smith commented on CASSANDRA-21728:
----------------------------------------------------

Hi [~madhusasidhar], thanks for the bug report - and for testing out Accord. 
TTL integration is currently unvalidated, so we appreciate the feedback and 
will take a look. If you encounter any problems with accord the best place to 
get help is in the cassandra-accord slack channel, as I don't actively monitor 
Jira.

> Accord: literal INSERT in BEGIN TRANSACTION is immediately unreadable with 
> table default TTL (6.0-alpha2)
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-21728
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21728
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Accord
>            Reporter: Madhu Sasidhar
>            Priority: Normal
>
> On unmodified Apache Cassandra 6.0-alpha2, an ordinary INSERT into a table 
> with
> `transactional_mode='full'` and `default_time_to_live=7200` produces a 
> readable row
> with TTL 7200. Inserting the same payload at a different key inside an 
> explicit
> `BEGIN TRANSACTION ... COMMIT TRANSACTION` returns without an error, but an
> immediate SELECT returns no row. Both operations target the same table and 
> node.
> *Environment*
>  - Cassandra: official 6.0-alpha2 binary, no server source/JAR modifications. 
> Corresponding source revision: `e874e3a90b1942b945477e6d9ba03880b4f4a19d`.
>  - Cassandra JAR SHA-256: 
> `ee3ff71538369ec3c07cfb15ebcf1fdbecbbb5045d91a5c67d77dea686908aaf`.
>  - One node, Ubuntu 24.04 container on Docker Desktop/WSL2 on Windows; 
> Eclipse Temurin 21.0.12+8 server JVM; two CPUs/three GiB container limit.
>  - Accord enabled; one queue shard and one command-store shard. Replication 
> factor 1; transport table uses TWCS and table-default TTL 7200.
>  - Client: Apache Cassandra Java driver 4.19.0 on Temurin 25.0.4.1+1, native 
> protocol V5, QUORUM/SERIAL, server-side timestamp generator, no explicit 
> query timestamp or now-in-seconds override, no request retries or speculative 
> execution.
>  - Synthetic two-byte blob payload; no application logic, concurrent writes, 
> manual flush, repair, restart or compaction request during the comparison.
>  - Verified affected version: {*}{{*}}6.0-alpha2 only{{*}}{*}. Current trunk 
> and later builds have not been tested.
> *Reproduction*
> Start with an otherwise ready Cassandra 6.0-alpha2 node with Accord enabled.
> Submit the entire BEGIN/COMMIT block as {*}one native CQL request{*}. 
> ```sql
> CREATE KEYSPACE probe_2ffad4464d834130
> WITH replication = \{'class':'SimpleStrategy','replication_factor':1};
> CREATE TABLE probe_2ffad4464d834130.transport_full
>     (address blob PRIMARY KEY, payload blob)
> WITH transactional_mode='full'
> AND default_time_to_live=7200
> AND compaction=\{'class':'TimeWindowCompactionStrategy'};
> INSERT INTO probe_2ffad4464d834130.transport_full
>     (address,payload) VALUES (0x02,0x1122);
> SELECT address, payload, ttl(payload) AS remaining_ttl,
>        writetime(payload) AS write_micros
> FROM probe_2ffad4464d834130.transport_full WHERE address=0x02;
> BEGIN TRANSACTION
>     INSERT INTO probe_2ffad4464d834130.transport_full
>         (address,payload) VALUES (0x03,0x1122);
> COMMIT TRANSACTION;
> SELECT address, payload, ttl(payload) AS remaining_ttl,
>        writetime(payload) AS write_micros
> FROM probe_2ffad4464d834130.transport_full WHERE address=0x03;
> ```
> *Expected result*
> Both rows should be readable immediately after their successful write 
> responses,
> with payload `0x1122` and TTL close to 7200 seconds. The transaction form 
> should
> not cause a two-hour table TTL to make the new row immediately invisible.
> *Actual result*
> The zero-row SELECT completed {*}{{*}}7 ms{{*}}{*} after the transaction 
> response. This is
> not a two-hour expiry-boundary test. An earlier attempt in the same server
> lifetime also showed this ordinary/transaction difference.
> *Possible investigation lead — not a claimed upstream diagnosis*
> Review of the exact Alpha 2 source and an isolated original-JAR value probe
> suggests that fully bound transaction updates construct expiring 
> cells/liveness
> with zero time, then replace write timestamps without rebasing local 
> expiration.
> Reference-derived values appear to use execution-time parameters. The relevant
> paths are `ModificationStatement.getTxnUpdate`, `TxnWrite` fragment 
> completion /
> timestamp replacement, and `AccordUpdateParameters`.
> Potentially related: [CASSANDRA-21376 — Accord: deterministic time 
> integration](https://issues.apache.org/jira/browse/CASSANDRA-21376).



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