[
https://issues.apache.org/jira/browse/CASSANDRA-7801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14129329#comment-14129329
]
Aleksey Yeschenko commented on CASSANDRA-7801:
----------------------------------------------
We definitely shouldn't be committing it to 2.0, but I'm wondering if we should
commit this at all.
If you want CAS to work on a particular cell/row, you should always be updating
those cells/rows using CAS, or else there is no way we can guarantee any
deterministic result.
'Fixing' this for a single node case would only mask the issue, and make tests
pass, wrongly, on single-node test clusters, giving false sense of security.
Tests would pass on a single node, but stuff would blow up in production.
Using IF EXISTS there is the real fix for that use case, IMO.
> A successful INSERT with CAS does not always store data in the DB after a
> DELETE
> --------------------------------------------------------------------------------
>
> Key: CASSANDRA-7801
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7801
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: PC with Windows 7 and on Linux installation.
> Have seen the fault on Cassandra 2.0.9 and Cassandra 2.1.0-rc5
> Reporter: Martin Fransson
> Assignee: Sylvain Lebresne
> Fix For: 2.0.11
>
> Attachments: 7801.txt, cas.zip
>
>
> When I run a loop with CQL statements to DELETE, INSERT with CAS and then a
> GET.
> The INSERT opertion is successful (Applied), but no data is stored in the
> database. I have checked the database manually after the test to verify that
> the DB is empty.
> for (int i = 0; i < 10000; ++i)
> {
> try
> {
> t.del();
> t.cas();
> t.select();
> }
> catch (Exception e)
> {
> System.err.println("i=" + i);
> e.printStackTrace();
> break;
> }
> }
> myCluster =
> Cluster.builder().addContactPoint("localhost").withPort(12742).build();
> mySession = myCluster.connect();
> mySession.execute("CREATE KEYSPACE IF NOT EXISTS castest WITH
> REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };");
> mySession.execute("CREATE TABLE IF NOT EXISTS castest.users (userid
> text PRIMARY KEY, name text)");
> myInsert = mySession.prepare("INSERT INTO castest.users (userid,
> name) values ('user1', 'calle') IF NOT EXISTS");
> myDelete = mySession.prepare("DELETE FROM castest.users where
> userid='user1'");
> myGet = mySession.prepare("SELECT * FROM castest.users where
> userid='user1'");
> }
> I can reproduce the fault with the attached program on a PC with windows 7.
> You need a cassandra runing and you need to set the port in the program.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)