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

DOAN DuyHai commented on CASSANDRA-14304:
-----------------------------------------

If you enforce server-generated timestamp:

 

Pros:
 * easier to sync time between servers rather than between clients
 * server are usually co-located geographically so easier to tune NTP

Cons:
 * you cannot apply retry strategy at client-side because in case of error, the 
client would send the same request for retry but now the server would assign a 
newer timestamp

When using client-side timestamp, you can use elaborated retry strategies like: 
Basic retry, speculative execution etc ..

 

 

> DELETE after INSERT IF NOT EXISTS does not work
> -----------------------------------------------
>
>                 Key: CASSANDRA-14304
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14304
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Julien
>            Assignee: Vinay Chella
>            Priority: Major
>         Attachments: debug.log, system.log
>
>
> DELETE a row immediately after INSERT IF NOT EXISTS does not work.
> Can be reproduced with this CQL script:
> {code:java}
> CREATE KEYSPACE ks WITH REPLICATION = { 'class' : 'SimpleStrategy', 
> 'replication_factor' : 1 };
> CREATE TABLE ks.ta ( id text PRIMARY KEY, col text );
> INSERT INTO ks.ta (id, col) VALUES ('myId', 'myCol') IF NOT EXISTS;
> DELETE FROM ks.ta WHERE id = 'myId';
> SELECT * FROM ks.ta WHERE id='myId';
> {code}
> {code:java}
> [cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
> Use HELP for help.
> WARNING: pyreadline dependency missing.  Install to enable tab completion.
> cqlsh> CREATE KEYSPACE ks WITH REPLICATION = { 'class' : 'SimpleStrategy', 
> 'replication_factor' : 1 };
> cqlsh> CREATE TABLE ks.ta ( id text PRIMARY KEY, col text );
> cqlsh> INSERT INTO ks.ta (id, col) VALUES ('myId', 'myCol') IF NOT EXISTS;
>  [applied]
> -----------
>       True
> cqlsh> DELETE FROM ks.ta WHERE id = 'myId';
> cqlsh> SELECT * FROM ks.ta WHERE id='myId';
>  id   | col
> ------+-------
>  myId | myCol
> {code}
>  * Only happens if the client is on a different host (works as expected on 
> the same host)
>  * Works as expected without IF NOT EXISTS
>  * A ~500 ms delay between INSERT and DELETE fixes the issue.
> Logs attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to