You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Andrés de la Peña (JIRA)" <ji...@apache.org> on 2017/04/13 08:44:41 UTC

[jira] [Updated] (CASSANDRA-13412) Update of column with TTL results in secondary index not returning row

     [ https://issues.apache.org/jira/browse/CASSANDRA-13412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrés de la Peña updated CASSANDRA-13412:
------------------------------------------
    Fix Version/s: 2.2.x
                   2.1.x
    Reproduced In: 2.2.9, 2.1.17  (was: 2.2.3, 3.0.11)
           Status: Patch Available  (was: Open)

> Update of column with TTL results in secondary index not returning row
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-13412
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13412
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Enrique Bautista Barahona
>            Assignee: Andrés de la Peña
>             Fix For: 2.1.x, 2.2.x
>
>
> Cassandra versions: 2.2.3, 3.0.11
> 1 datacenter, keyspace has RF 3. Default consistency level.
> Steps:
> 1. I create these table and index.
> {code}
> CREATE TABLE my_table (
>     a text,
>     b text,
>     c text,
>     d set<int>,
>     e float,
>     f text,
>     g int,
>     h double,
>     j set<int>,
>     k float,
>     m set<text>,
>     PRIMARY KEY (a, b, c)
> ) WITH read_repair_chance = 0.0
>    AND dclocal_read_repair_chance = 0.1
>    AND gc_grace_seconds = 864000
>    AND bloom_filter_fp_chance = 0.01
>    AND caching = { 'keys' : 'ALL', 'rows_per_partition' : 'NONE' }
>    AND comment = ''
>    AND compaction = { 'class' : 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' }
>    AND compression = { 'sstable_compression' : 'org.apache.cassandra.io.compress.LZ4Compressor' }
>    AND default_time_to_live = 0
>    AND speculative_retry = '99.0PERCENTILE'
>    AND min_index_interval = 128
>    AND max_index_interval = 2048;
> CREATE INDEX my_index ON my_table (c);
> {code}
> 2. I have 9951 INSERT statements in a file and I run the following command to execute them. The INSERT statements have no TTL and no consistency level is specified.
> {code}
> cqlsh <ip> <port> -u <user> -f <file>
> {code}
> 3. I update a column filtering by the whole primary key, and setting a TTL. For example:
> {code}
> UPDATE my_table USING TTL 30 SET h = 10 WHERE a = 'test_a' AND b = 'test_b' AND c = 'test_c';
> {code}
> 4. After the time specified in the TTL I run the following queries:
> {code}
> SELECT * FROM my_table WHERE a = 'test_a' AND b = 'test_b' AND c = 'test_c';
> SELECT * FROM my_table WHERE c = 'test_c';
> {code}
> The first one returns the correct row with an empty h column (as it has expired). However, the second query (which uses the secondary index on column c) returns nothing.
> I've done the query through my app which uses the Java driver v3.0.4 and reads with CL local_one, from the cql shell and from DBeaver 3.8.5. All display the same behaviour. The queries are performed minutes after the writes and the servers don't have a high load, so I think it's unlikely to be a consistency issue.
> I've tried to reproduce the issue in ccm and cqlsh by creating a new keyspace and table, and inserting just 1 row, and the bug doesn't manifest. This leads me to think that it's an issue only present with not trivially small amounts of data, or maybe present only after Cassandra compacts or performs whatever maintenance it needs to do.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)