Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 058B410E87 for ; Fri, 14 Mar 2014 13:41:05 +0000 (UTC) Received: (qmail 39385 invoked by uid 500); 14 Mar 2014 13:40:52 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 39226 invoked by uid 500); 14 Mar 2014 13:40:47 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 38989 invoked by uid 99); 14 Mar 2014 13:40:45 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Mar 2014 13:40:45 +0000 Date: Fri, 14 Mar 2014 13:40:45 +0000 (UTC) From: "Sylvain Lebresne (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CASSANDRA-6837) Batch CAS does not support LOCAL_SERIAL MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-6837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sylvain Lebresne updated CASSANDRA-6837: ---------------------------------------- Fix Version/s: 2.0.7 > Batch CAS does not support LOCAL_SERIAL > --------------------------------------- > > Key: CASSANDRA-6837 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6837 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Nicolas Favre-Felix > Assignee: Sylvain Lebresne > Fix For: 2.0.7 > > Attachments: 6837.txt > > > The batch CAS feature introduced in Cassandra 2.0.6 does not support the LOCAL_SERIAL consistency level, and always uses SERIAL. > Create a cluster with 4 nodes with the following topology: > {code} > Datacenter: DC2 > =============== > Status=Up/Down > |/ State=Normal/Leaving/Joining/Moving > -- Address Load Tokens Owns Host ID Rack > UN 127.0.0.3 269 KB 256 26.3% ae92d997-6042-42d9-b447-943080569742 RAC1 > UN 127.0.0.4 197.81 KB 256 25.1% 3edc92d7-9d1b-472a-8452-24dddbc4502c RAC1 > Datacenter: DC1 > =============== > Status=Up/Down > |/ State=Normal/Leaving/Joining/Moving > -- Address Load Tokens Owns Host ID Rack > UN 127.0.0.1 226.92 KB 256 24.8% dbc17bd7-1ede-47a2-9b31-6063752d6eb3 RAC1 > UN 127.0.0.2 179.27 KB 256 23.7% bb0ad285-34d2-4989-a664-b068986ab6fa RAC1 > {code} > In cqlsh: > {code} > cqlsh> CREATE KEYSPACE foo WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 2, 'DC2': 2}; > cqlsh> USE foo; > cqlsh:foo> CREATE TABLE bar (x text, y bigint, z bigint, t bigint, PRIMARY KEY(x,y)); > {code} > Kill nodes 127.0.0.3 and 127.0.0.4: > {code} > Datacenter: DC2 > =============== > Status=Up/Down > |/ State=Normal/Leaving/Joining/Moving > -- Address Load Tokens Owns Host ID Rack > DN 127.0.0.3 262.37 KB 256 26.3% ae92d997-6042-42d9-b447-943080569742 RAC1 > DN 127.0.0.4 208.04 KB 256 25.1% 3edc92d7-9d1b-472a-8452-24dddbc4502c RAC1 > Datacenter: DC1 > =============== > Status=Up/Down > |/ State=Normal/Leaving/Joining/Moving > -- Address Load Tokens Owns Host ID Rack > UN 127.0.0.1 214.82 KB 256 24.8% dbc17bd7-1ede-47a2-9b31-6063752d6eb3 RAC1 > UN 127.0.0.2 178.23 KB 256 23.7% bb0ad285-34d2-4989-a664-b068986ab6fa RAC1 > {code} > Connect to 127.0.0.1 in DC1 and run a CAS batch at CL.LOCAL_SERIAL+LOCAL_QUORUM: > {code} > final Cluster cluster = new Cluster.Builder() > .addContactPoint("127.0.0.1") > .withLoadBalancingPolicy(new DCAwareRoundRobinPolicy("DC1")) > .build(); > final Session session = cluster.connect("foo"); > Batch batch = QueryBuilder.batch(); > batch.add(new SimpleStatement("INSERT INTO bar (x,y,z) VALUES ('abc', 123, 1) IF NOT EXISTS")); > batch.add(new SimpleStatement("UPDATE bar SET t=2 WHERE x='abc' AND y=123")); > batch.setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM); > batch.setSerialConsistencyLevel(ConsistencyLevel.LOCAL_SERIAL); > session.execute(batch); > {code} > The batch fails with: > {code} > Caused by: com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency SERIAL (3 required but only 2 alive) > at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:44) > at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:33) > at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:182) > at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:66) > ... 21 more > {code} -- This message was sent by Atlassian JIRA (v6.2#6252)