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

mlowicki commented on CASSANDRA-8712:
-------------------------------------

1. Drop keyspace
{code}
cqlsh> use sync;
cqlsh:sync> drop keyspace sync;
cqlsh:sync>
{code}

2. Creating keyspace from scratch (I'm using sync_casandra from 
django-cassandra-engine)
{code}
./bin/django sync_cassandra
Creating keyspace sync..
Syncing sync.api.models.Entity
Syncing sync.api.models.UserStore
{code}

3. Populate database using Django's shell
{code}
>>> from sync.api.models import Entity, UserStore
>>> user = UserStore.objects.create(user_id='foo')
>>> root = Entity.objects.create(user_id='foo', data_type_id=0, version=0, 
>>> id='-1')
{code}
4. Run {{check_parent_index_consistency}} script:

{code}
./bin/django check_parent_index_consistency
{
    "folder": 1, 
    "user": 1
}
{code}

5. Add entities to root folder
{code}
>>> for i in range(10000):
>>>     Entity.objects.create(user_id='foo', data_type_id=0, version=0, id='a' 
>>> + str(i), parent_id='-1', folder=False)
{code}


6. While inserting run {{check_parent_index_consistency}} script:

{code}
./bin/django check_parent_index_consistency
{   
    "folder": 1,
    "inconsistent_folder": 1,
    "user": 1
}
{code}

Number of entities returned directly from {{entity}} while running insert was 
8918 but got only 372 from index.

It seems to be related to number of entities I'm adding. If less than 10000 I 
couldn't reproduce the issue. When running {{check_parent_index_consistency}} 
script after couple of minutes it was completely fine - no inconsistencies. Not 
sure if this is the same issue as number of inconsistencies is zero after some 
time but maybe it'll help.

{{check_parent_index_consistency}} is available on https://cpaste.org/p7zht9rli

> Out-of-sync secondary index
> ---------------------------
>
>                 Key: CASSANDRA-8712
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8712
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: 2.1.2
>            Reporter: mlowicki
>             Fix For: 2.1.3
>
>
> I've such table with index:
> {code}
> CREATE TABLE entity (
>     user_id text,
>     data_type_id int,
>     version bigint,
>     id text,
>     cache_guid text,
>     client_defined_unique_tag text,
>     ctime timestamp,
>     deleted boolean,
>     folder boolean,
>     mtime timestamp,
>     name text,
>     originator_client_item_id text,
>     parent_id text,
>     position blob,
>     server_defined_unique_tag text,
>     specifics blob,
>     PRIMARY KEY (user_id, data_type_id, version, id)
> ) WITH CLUSTERING ORDER BY (data_type_id ASC, version ASC, id ASC)
>     AND bloom_filter_fp_chance = 0.01
>     AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
>     AND comment = ''
>     AND compaction = {'min_threshold': '4', 'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32'}
>     AND compression = {'sstable_compression': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
>     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 = '99.0PERCENTILE';
> CREATE INDEX index_entity_parent_id ON entity (parent_id);
> {code}
> It turned out that index became out of sync:
> {code}
> >>> Entity.objects.filter(user_id='255824802', 
> >>> parent_id=parent_id).consistency(6).count()
> 16
>  
> >>> counter = 0
> >>> for e in Entity.objects.filter(user_id='255824802'):
> ...     if e.parent_id and e.parent_id == parent_id:
> ...         counter += 1
> ... 
> >>> counter
> 10
> {code}
> After couple of hours it was fine (at night) but then when user probably 
> started to interact with DB we got the same problem. As a temporary solution 
> we'll try to rebuild indexes from time to time as suggested in 
> http://dev.nuclearrooster.com/2013/01/20/using-nodetool-to-rebuild-secondary-indexes-in-cassandra/
> Launched simple script for checking such anomaly and before rebuilding index 
> for 4024856 folders 10378 had this issue.



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

Reply via email to