cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Ellis <jbel...@gmail.com>
Subject Re: Newbe´s question
Date Mon, 24 Aug 2009 14:50:09 GMT
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