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 E0A0E1108C for ; Mon, 7 Jul 2014 16:32:34 +0000 (UTC) Received: (qmail 18666 invoked by uid 500); 7 Jul 2014 16:32:34 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 18601 invoked by uid 500); 7 Jul 2014 16:32:34 -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 18402 invoked by uid 99); 7 Jul 2014 16:32:34 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Jul 2014 16:32:34 +0000 Date: Mon, 7 Jul 2014 16:32:34 +0000 (UTC) From: "Sylvain Lebresne (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CASSANDRA-7499) Unable to update list element by index using CAS condition 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-7499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sylvain Lebresne updated CASSANDRA-7499: ---------------------------------------- Since Version: 2.0.0 (was: 2.0.9) > Unable to update list element by index using CAS condition > ---------------------------------------------------------- > > Key: CASSANDRA-7499 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7499 > Project: Cassandra > Issue Type: Bug > Components: Core > Environment: Cassandra *2.0.9*, Java Driver *2.0.2* & *2.0.3* > Client: cqlsh *3.1.8*, CQL spec *3.1.0*, Thrift protocol *19.39.0* > Reporter: DOAN DuyHai > Assignee: Sylvain Lebresne > Fix For: 2.0.10 > > > While running IT tests for *Achilles*, I ran into a strange bug: > *With CQLSH* > {code:sql} > cqlsh:test> CREATE TABLE cas_update(id int PRIMARY KEY,name text,friends list); > cqlsh:test> INSERT INTO cas_update (id, name , friends ) VALUES ( 10,'John',['Paul','George']); > cqlsh:test> SELECT * FROM cas_update WHERE id=10; > id | friends | name > ----+--------------------+------ > 10 | ['Paul', 'George'] | John > cqlsh:test> UPDATE cas_update SET friends[0]='Helen' WHERE id=10 IF name='John'; > Bad Request: List index 0 out of bound, list has size 0 > cqlsh:test> UPDATE cas_update SET friends[0]='Helen' WHERE id=10; > cqlsh:test> SELECT * FROM cas_update WHERE id=10; > id | friends | name > ----+---------------------+------ > 10 | ['Helen', 'George'] | John > {code} > It seems that we cannot update list element by index with a CAS condition. > *With Java driver 2.0.2 or 2.0.3* > {code:java} > ACHILLES_DML_STATEMENT@:writeDMLStatementLog Prepared statement : [INSERT INTO CompleteBean(id,followers,friends,name,preferences) VALUES (:id,:followers,:friends,:name,:preferences) USING TTL :ttl;] with CONSISTENCY LEVEL [ONE] > ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values : [621309709026375591, [], [Paul, Andrew], John, {}, 0] > ACHILLES_DML_STATEMENT@:writeDMLStartBatch > ACHILLES_DML_STATEMENT@:writeDMLStartBatch > ACHILLES_DML_STATEMENT@:writeDMLStartBatch ****** BATCH UNLOGGED START ****** > ACHILLES_DML_STATEMENT@:writeDMLStartBatch > ACHILLES_DML_STATEMENT@:writeDMLStatementLog Parameterized statement : [UPDATE CompleteBean USING TTL 100 SET friends[0]=? WHERE id=621309709026375591 IF name=?;] with CONSISTENCY LEVEL [ONE] > ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values : [100, 0, Helen, 621309709026375591, John] > ACHILLES_DML_STATEMENT@:writeDMLStatementLog Parameterized statement : [UPDATE CompleteBean USING TTL 100 SET friends[1]=null WHERE id=621309709026375591 IF name=?;] with CONSISTENCY LEVEL [ONE] > ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values : [100, 1, null, 621309709026375591, John] > ACHILLES_DML_STATEMENT@:writeDMLEndBatch > ACHILLES_DML_STATEMENT@:writeDMLEndBatch ****** BATCH UNLOGGED END with CONSISTENCY LEVEL [DEFAULT] ****** > ACHILLES_DML_STATEMENT@:writeDMLEndBatch > ACHILLES_DML_STATEMENT@:writeDMLEndBatch > ACHILLES_DML_STATEMENT@:truncateTable Simple query : [TRUNCATE entity_with_enum] with CONSISTENCY LEVEL [ALL] > ACHILLES_DML_STATEMENT@:truncateTable Simple query : [TRUNCATE CompleteBean] with CONSISTENCY LEVEL [ALL] > com.datastax.driver.core.exceptions.InvalidQueryException: List index 0 out of bound, list has size 0 > at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35) > at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:256) > at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:172) > at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52) > {code} > With Cassandra *2.0.8* and Java Driver 2.0.2 or 2.0.3, *the test passed* so it seems that there is a regression somewhere in the CAS update code -- This message was sent by Atlassian JIRA (v6.2#6252)