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

Mircea Lemnaru commented on CASSANDRA-11314:
--------------------------------------------

Hi [~blerer], I did some more tests over the last couple of days and found that 
there is not really a cassandra issue , it's rather something like a usage 
issue. Let me describe what I found ... 

So as I have mentioned before the cluster had 3 nodes node1 (seed node) 
,node2,node3 and my keyspace had replication factor = 2. Then I did more tests 
using the following scenario:

1. node1 UP , node2 DOWN, node3 DOWN , I tried to do the following query: 
select count(*) from collected_data_day where collection_day=16462 --> this 
query did not execute properly because node1 did not contain a replica of the 
row = 16462 this suggested to me that the data must be ONLY on nodes node2 and 
node3

2. node1 UP, node2 UP, node3 DOWN - executing the same query ( select count(*) 
from collected_data_day where collection_day=16462 ) 20 times consecutively 
resulted in exactly the same result ... COUNT = 55300 ... strange right ? 

3. node1 UP, node2 DOWN, node3 UP - same as 2 and I got COUNT = 55677 - every 
time , 20 times.

So this rang some bells , it seems that row = 16642 has 2 replicas = but the 
replicas are not identical , it seems that when the data was written the 
CONSISTENCY level was not properly set , in the sense that it was left default 
, and that is ONE if I am not mistaking.

I then proceeded to drop the table and reimport the data. This time I imported 
the data with CONSISTENCY = ALL and after this , all the counts were identical 
, no matter how many times I ran the query. 

So yeah ,this must have been the issue. I am guessing this can be closed as not 
a real issue / bug :)

PS: One thing that confused me all along was the COUNT values I got while the 
replicas were not identical ... if you remember , I got something like: 

Count (done on cassandra cluster): 55300
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55300
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55634
Count (done on cassandra cluster): 55530
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55342
Count (done on cassandra cluster): 55300
Count (done on cassandra cluster): 55630
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55297
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55352
Count (done on cassandra cluster): 55300
Count (done on cassandra cluster): 55677
Count (done on cassandra cluster): 55300

>From these results ... it's clear that 55300 came from counting the items from 
>node1 and that 55677 came from node3 .... but what about 55634, 55342, 55352 ? 
>Where were these results comming from ... ?

Anyway, I am glad this is not a bug but a configuration issue. Thank you.

> Inconsistent select count(*)
> ----------------------------
>
>                 Key: CASSANDRA-11314
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11314
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local Write-Read Paths
>         Environment: Ununtu 14.04 LTS
>            Reporter: Mircea Lemnaru
>            Assignee: Benjamin Lerer
>         Attachments: testrun.log, vnodes_and_hosts
>
>
> Hello,
> I currently have this setup: 
> Cassandra 3.3 (Community edition downloaded from Datastax) installed on 3 
> nodes and I have created this table:
> CREATE TABLE billing.collected_data_day (
>     collection_day int,
>     timestamp timestamp,
>     record_id uuid,
>     dimensions map<text, text>,
>     entity_id text,
>     measurements map<text, text>,
>     source_id text,
>     PRIMARY KEY (collection_day, timestamp, record_id)
> ) WITH CLUSTERING ORDER BY (timestamp ASC, record_id ASC)
>     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', 
> 'max_threshold': '32', 'min_threshold': '4'}
>     AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
>     AND crc_check_chance = 1.0
>     AND dclocal_read_repair_chance = 0.1
>     AND default_time_to_live = 0
>     AND gc_grace_seconds = 864000
>     AND max_index_interval = 2048
>     AND memtable_flush_period_in_ms = 0
>     AND min_index_interval = 128
>     AND read_repair_chance = 0.0
>     AND speculative_retry = '99PERCENTILE';
> This table as you notice is partitioned by collection_day. This is because at 
> the end of the day we need to have fast access to all the data generated in a 
> day. collection day will be the x day from 1970
> In this table we have inserted roughly 12milion rows for testing purposes and 
> we did a simple count. As you can see the results vary ... 
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55341
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55372
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55300
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55300
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55300
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55303
> (1 rows)
> cqlsh:billing> select count(*) from collected_data_day where 
> collection_day=16462;
>  count
> -------
>  55374
> (1 rows)
> I am running the query from the seed node of the cassandra cluster. As you 
> can see most of the results are varying and I don't know the reason for this. 
> We are not writing anything into the cluster at this time , we are only 
> querying the cluster and only using this CQLSH.
> This is very similar to CASSANDRA-8940 but that is targeted for 2.1x
> Could it be that we are having the same issue in 3.3 ? 
> Please let me know what extra info I can provide



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

Reply via email to