incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bruno Couto <bco...@gmail.com>
Subject Re: Newbe´s question
Date Mon, 24 Aug 2009 17:28:35 GMT
Jonathan,


First, thanks for answering so fast.
I´m using version 0.3-final of Cassandra, then I believe the api
version 0.4 is not the problem, am I correct?
I'll look for the null problem.


Bruno Couto


On Mon, Aug 24, 2009 at 11:50 AM, Jonathan Ellis<jbellis@gmail.com> wrote:
> There's two things going on here, I think.
>
> One is that you're passing a null where there shouldn't be one.  This
> is a thrift bug and will be addressed in the next beta.
>
> The other is that IIRC lazyboy needs to be updated to work with the
> latest 0.4 api.
>
> -Jonathan
>
> On Mon, Aug 24, 2009 at 9:09 AM, Bruno Couto<bcouto@gmail.com> wrote:
>> Hi Guys,
>>
>> my name is Bruno and I'm from Brazil, first, sorry for my bad english.
>> I'm in my first steps with cassandra, and I´m trying to use Lazyboy
>> (python wrapper).
>> But when I run the layzyboy columnfamily.py example, I get the
>> following error messages.
>> Someone with more experience could help me?
>>
>> Thanks,
>>
>> Bruno Couto.
>>
>>
>> ----
>>
>> Cassandra Error Message:
>>
>> DEBUG - batch_insert
>> ERROR - Internal error processing batch_insert
>> java.lang.NullPointerException
>>        at org.apache.cassandra.db.RowMutation.getRowMutation(RowMutation.java:284)
>>        at org.apache.cassandra.service.CassandraServer.batch_insert(CassandraServer.java:318)
>>        at org.apache.cassandra.service.Cassandra$Processor$batch_insert.process(Cassandra.java:968)
>>        at org.apache.cassandra.service.Cassandra$Processor.process(Cassandra.java:807)
>>        at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:252)
>>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>        at java.lang.Thread.run(Thread.java:619)
>> DEBUG - Disseminating load info ...
>>
>> ----
>>
>> Python Error Message:
>>
>> localhost ~ # python columnfamily.py
>> {'table': 'UserData', 'superkey': None, 'key':
>> '3a63b82a947d4ee1a8cbee45944b5dcb', 'family': 'Users', 'supercol':
>> None}
>> {'username': 'ieure', 'email': 'ian@digg.com'}
>> True
>> Traceback (most recent call last):
>>  File "columnfamily.py", line 65, in <module>
>>    u.save()           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>  File "/root/columnfamily.py", line 119, in save
>>
>>  File "build/bdist.linux-i686/egg/lazyboy/connection.py", line 106, in func
>> lazyboy.exceptions.ErrorThriftMessage: Internal error processing batch_insert
>>
>> ----
>>
>> ColumnFamily.py
>>
>> # -*- coding: utf-8 -*-
>> #
>> # Lazyboy examples
>> #
>> # © 2009 Digg, Inc. All rights reserved.
>> # Author: Ian Eure <ian@digg.com>
>> #
>> # This example assumes the following schema:
>> #
>> # <Tables>
>> #     <Table Name="UserData">
>> #         <ColumnFamily ColumnSort="Name" Name="Users"/>
>> #     </Table>
>> # </Tables>
>> #
>>
>>
>> from lazyboy import *
>>
>>
>> # Define your cluster(s)
>> connection.add_pool('UserData', ['localhost:9160'])
>>
>>
>> # Subclass ColumnFamily to create an object of the correct type.
>> class User(columnfamily.ColumnFamily):
>>    """A class representing a user in Cassandra."""
>>
>>    # _key is the key template. It's values are given to
>>    # PrimaryKey.__init__ as keyword arguments any time a PK is
>>    # instantiated for this object.
>>    _key = {'table': 'UserData',        # The table to store in
>>            'family': 'Users'}          # The ColumnFamily name to store
on
>>
>>    # Anything in here _must_ be set before the object is saved
>>    _required = ('username',)
>>
>>
>> # Create an empty object
>> u = User()
>>
>> # A PrimaryKey is generated for you:
>> print u.pk
>> # -> {'table': 'UserData', 'superkey': None,
>> #     'key': 'da6c8e19174f40cfa6d0b65a08eef62f',
>> #     'family': 'Users', 'supercol': None}
>>
>> data = {'username': 'ieure', 'email': 'ian@digg.com'}
>>
>> # The object is a dict. All these are equivalent.
>> u.update(data)
>> u.update(data.items())
>> u.update(**data)
>> for k in data:
>>    u[k] = data[k]
>>
>> # Arguments to __init__ are passed to update()
>> u = User(data)
>> print u            # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>
>> # You can see if it's been modified.
>> print u.is_modified()           # -> True
>>
>> # Save to Cassandra
>> u.save()           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>
>> print u.is_modified()           # -> False
>>
>> # Load it in a new instance.
>> u_ = User().load(u.pk.key)
>> print u_           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>
>> print u.is_modified()           # -> False
>> del u['username']
>> print u.valid()                 # -> False
>> print u.missing()               # -> ('username',)
>> try:
>>    u.save()        # -> ('Missing required field(s):', ('username',))
>> except Exception, e:
>>    print e
>>
>> # Discard modifications
>> u.revert()
>> print u.is_modified()           # -> False
>> print u.valid()                 # -> True
>>
>

Mime
View raw message