cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvestor George (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-10021) Losing writes in a single-node cluster
Date Tue, 11 Aug 2015 23:14:45 GMT

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

Sylvestor George commented on CASSANDRA-10021:
----------------------------------------------

I was able to reproduce the issue in the attached Go file. The update also fails if the new
float value is larger than the previous float value. Although its not the case for every update
but its significantly frequent. I tested with C* version 2.1.6 and 2.1.7.
The issue does not exist for C* version 2.1.8

> Losing writes in a single-node cluster
> --------------------------------------
>
>                 Key: CASSANDRA-10021
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10021
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Docker images
>            Reporter: Jeremy Schlatter
>            Assignee: Sylvestor George
>         Attachments: cpp-repro.zip, go-repro.zip
>
>
> I am able to reliably reproduce write losses in the following circumstances:
> * Set up a single-node cluster.
> * Create keyspace with SimpleStrategy, replication_factor = 1.
> * Create a table with a float field.
> * Send an UPDATE command to set the float value on a row.
> * After the command returns, immediately send another UPDATE to set the float value to
something _smaller_ than the first value.
> * The second UPDATE is sometimes lost.
> Reproduction code attached. There are two implementations: one in Go and one in C++.
They do the same thing -- I implemented both to rule out a bug in the client library. For
both cases, you can reproduce by doing the following:
> 1. docker run --name repro-cassandra --rm cassandra:2.0.14
> (or any other Cassandra version)
> 2. Download and unzip one of the zip files, and change to its directory.
> 3. docker build -t repro .
> 4. docker run --link repro-cassandra:cassandra --rm repro
> The reproduction code will repeatedly run two UPDATEs followed by a SELECT until it detects
a lost write, and then print:
> "Lost a write. Got 20.500000, want 10.500000"
> This may be fixed in 2.1.8 because I have not been able to reproduce it in that version.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message