cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-2938) NotFoundException doing a quick succession of insert/get's on the same CF or rowkey
Date Mon, 25 Jul 2011 18:56:09 GMT

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

Tyler Hobbs commented on CASSANDRA-2938:
----------------------------------------

What Brandon said is correct. For those concerned, this is fixed in pycassa 1.1.1, which was
released earlier today.

> NotFoundException doing a quick succession of insert/get's on the same CF or rowkey
> -----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-2938
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2938
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.8.0
>            Reporter: Cathy Daw
>            Assignee: Brandon Williams
>            Priority: Critical
>         Attachments: t910.py
>
>
> *Issue*
> * A customer complained about pycassa.cassandra.c08.ttypes.NotFoundException: NotFoundException()
> * This issue is related to a quick succession of insert/get's. 
> * Customer's AWS instance on EBS:  1 row with 10K columns, with sleep code:  fails 1/10
inserts
> * 3-node test cluster on Rackspace.  
> ** We could not reproduce this with the sleep code left in.  This was tested with the
SimpleStrategy and NetworkTopologyStrategy.
> ** 1 row with 10K columns, without sleep code:  fails 1/500 inserts
> ** 10K row with 1 column, without sleep code:  Script passes 2 in 5 attempts.  When it
fails, it is at about the 4000-5000th insert.
> *Stack*
> {code}
> Traceback (most recent call last):
>   File "t910.py", line 56, in <module>
>     test()
>   File "t910.py", line 43, in test
>     db.get('testraw', columns=[key, ]) 
>   File "/usr/local/lib/python2.6/dist-packages/pycassa-1.1.0-py2.6.egg/pycassa/columnfamily.py",
line 391, in get
>     read_consistency_level or self.read_consistency_level)
>   File "/usr/local/lib/python2.6/dist-packages/pycassa-1.1.0-py2.6.egg/pycassa/pool.py",
line 380, in new_f
>     result = getattr(super(ConnectionWrapper, self), f.__name__)(*args, **kwargs)
>   File "/usr/local/lib/python2.6/dist-packages/pycassa-1.1.0-py2.6.egg/pycassa/cassandra/c08/Cassandra.py",
line 422, in get
>     return self.recv_get()
>   File "/usr/local/lib/python2.6/dist-packages/pycassa-1.1.0-py2.6.egg/pycassa/cassandra/c08/Cassandra.py",
line 449, in recv_get
>     raise result.nfe
> pycassa.cassandra.c08.ttypes.NotFoundException: NotFoundException()
> {code}
> *Script - also attached*
> {code}
> #!/usr/bin/python
> import time
> import pycassa
> from pycassa import system_manager
> from pycassa.system_manager import *
> def test():
>         m = pycassa.system_manager.SystemManager('cathy1:9160')
>         pool = pycassa.pool.ConnectionPool('testraw',
>                 server_list=['cathy1:9160', ], timeout=5, pool_size=16,
>                 max_overflow=0, prefill=False, pool_timeout=30, max_retries=8)
>         kspaces = m.list_keyspaces()
>         if not 'testraw' in kspaces:
>                 m.create_keyspace('testraw', 3)
>         cfs = m.get_keyspace_column_families('testraw')
>         if 'testraw' not in cfs:
>                 m.create_column_family('testraw', 'testraw',
>         comparator_type=system_manager.BYTES_TYPE,
>                 default_validation_class=system_manager.BYTES_TYPE,
>                 row_cache_size=1024 * 1024, key_cache_size=0)
>         db = pycassa.ColumnFamily(pool, 'testraw',
>                 read_consistency_level=pycassa.ConsistencyLevel.QUORUM,
>                 write_consistency_level=pycassa.ConsistencyLevel.QUORUM)
>         try:
>                 for i in range(10000):
>                         print 'Inserting %d' % i
>                         # The following code generates 1 row with 10K columns
>                         key = str(i)
>                         db.insert('testraw', {key: ''})
>                         db.get('testraw', columns=[key, ])
>                         # The following code generates 10K rows with 1 columns
>                         #key = 'key' + str(i) 
>                         #db.insert(key, {str(i) : ''}) 
>                         #db.get(key, columns=[str(i), ]) 
>                         # time.sleep(.1) 
>         finally:
>                 print 'Done'
>                 m.drop_keyspace('testraw')
> if __name__ == '__main__':
>         test()
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message