Jeremy Schlatter created CASSANDRA-10021:
--------------------------------------------
Summary: 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: I have been testing this against Docker's official
Cassandra image.
Reporter: Jeremy Schlatter
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)