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
            Priority: Minor
         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.  See: 
[http://support.datastax.com/tickets/910]
* Customer's AWS instance on EBS:  1 row with 10K columns, with sleep code:  
fails 1/10 inserts

* 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

        

Reply via email to