cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Goffinet <goffi...@digg.com>
Subject Re: Newbe´s question
Date Mon, 24 Aug 2009 22:20:49 GMT
Please send pull requests to Digg, our guys can merge them in.

---
Chris Goffinet
goffinet@digg.com





On Aug 24, 2009, at 3:15 PM, Drew Schleck wrote:

> I've been working on a Lazyboy 0.4 update at
> http://github.com/dschleck/lazyboy/ . Right now it's at the point
> where it works for me and what I'm doing but there's probably a few
> bugs to be caught. As an example, yesterday I noticed it wasn't
> possible to delete items out of supercolumns so I fixed that.
>
> If you decide to use my branch of it and find a bug, please tell me
> about it and I'll do my best to sort it out.
>
> Drew
>
> On Mon, Aug 24, 2009 at 12:09, Evan Weaver<eweaver@gmail.com> wrote:
>> The Ruby client works fine. ;-)
>>
>> Evan
>>
>> On Mon, Aug 24, 2009 at 12:00 PM, Jonathan Ellis<jbellis@gmail.com>  
>> wrote:
>>> That's probably the best option at the moment.  Once you're familiar
>>> with the thrift API I'm sure the lazyboy devs would welcome updates
>>> too.
>>>
>>> -Jonathan
>>>
>>> On Mon, Aug 24, 2009 at 1:54 PM, Bruno Couto<bcouto@gmail.com>  
>>> wrote:
>>>> Thanks for helpping me Jonathan!
>>>>
>>>> Well, now I know that I can´t use the Lazyboy, then I will try my
>>>> first steps using the Cassandra trunk version and thrift api  
>>>> whitout a
>>>> wrapper.
>>>>
>>>>
>>>> On Mon, Aug 24, 2009 at 2:41 PM, Jonathan  
>>>> Ellis<jbellis@gmail.com> wrote:
>>>>> lazyboy works vs an earlier version of trunk, so it's already
>>>>> incompatible with 0.3, but not yet compatible w/ latest 0.4 :)
>>>>>
>>>>> On Mon, Aug 24, 2009 at 12:28 PM, Bruno Couto<bcouto@gmail.com>
 
>>>>> wrote:
>>>>>> 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
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Evan Weaver
>>


Mime
View raw message