incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Ellis <jbel...@gmail.com>
Subject Re: Deleting and re-inserting row causes error in get_slice count parameter
Date Thu, 25 Mar 2010 20:44:45 GMT
Can you create a ticket with a test case?

On Thu, Mar 25, 2010 at 3:39 PM, Bob Florian <bflorian@gmail.com> wrote:
> I was originally using 0.5.0 but I've reproduced the behavior with
> 0.5.1 and 0.6.0-beta3.
>
>
> On Wed, Mar 24, 2010 at 3:00 PM, Jonathan Ellis <jbellis@gmail.com> wrote:
>> Are you using 0.5.0?  Because this sounds like a bug that was fixed in 0.5.1.
>>
>> On Mon, Mar 22, 2010 at 5:13 PM, Bob Florian <bflorian@gmail.com> wrote:
>>> I'm new to Cassandra and have run into a problem that I think is a
>>> bug, but wanted to get some feedback in case I'm misunderstanding
>>> something.
>>>
>>> I've found that when I delete an entire row in a column family with
>>> super columns, and then re-insert values with the same row and super
>>> column keys, the count parameter to the get_slice call no longer works
>>> properly.  Its like it is still counting the deleted columns, but only
>>> returning the new columns.
>>>
>>> The following example uses the Ruby Cassandra client (see link below),
>>> but I've seen the same behavior with the Java Thrift interface.
>>>
>>> 1)  First I create a client and insert a super column with three columns:
>>>
>>>>> require 'cassandra'
>>> => true
>>>>> cc = Cassandra.new('Keyspace1')
>>> => #<Cassandra:2159536540, @keyspace="Keyspace1", @schema={},
>>> @servers=["127.0.0.1:9160"]>
>>>>> cc.insert(:Super1,'test1',{'bucket1' => {'1' => 'Item 1', '2' =>
'Item 2', '5' => 'Item 5'}})
>>> => nil
>>>
>>>
>>> 2)  Getting the slice of columns just inserted works with or without
>>> the count parameter:
>>>
>>>>> cc.get(:Super1,'test1','bucket1')
>>> => #<OrderedHash {"1"=>"Item 1", "2"=>"Item 2", "5"=>"Item 5"}>
>>>
>>>>> cc.get(:Super1,'test1','bucket1',:count => 3)
>>> => #<OrderedHash {"1"=>"Item 1", "2"=>"Item 2", "5"=>"Item 5"}>
>>>
>>>
>>> 3)  Now I remove the row:
>>>
>>>>> cc.remove(:Super1,'test1')
>>> => nil
>>>
>>>
>>> 4)  And confirm that nothing's left:
>>>>> cc.get(:Super1,'test1','bucket1')
>>> => #<OrderedHash {}>
>>>
>>>
>>> 5)  Next I insert 3 different columns using the same row and super column keys:
>>>
>>>>> cc.insert(:Super1,'test1',{'bucket1' => {'3' => 'Item 3', '4' =>
'Item 4', '6' => 'Item 6'}})
>>> => nil
>>>
>>>
>>> 6)  Getting the slice of columns works correctly with no count parameter:
>>>
>>>>> cc.get(:Super1,'test1','bucket1')
>>> => #<OrderedHash {"6"=>"Item 6", "3"=>"Item 3", "4"=>"Item 4"}>
>>>
>>>
>>> 7)  But setting the count parameter to 3 returns fewer than 3 columns:
>>>
>>>>> cc.get(:Super1,'test1','bucket1',:count => 3)
>>> => #<OrderedHash {"3"=>"Item 3"}>
>>>
>>>
>>> 8)  Incrementally increasing the count parameter confirms the apparent
>>> behavior of counting the deleted columns:
>>>
>>>>> cc.get(:Super1,'test1','bucket1',:count => 4)
>>> => #<OrderedHash {"3"=>"Item 3", "4"=>"Item 4"}>
>>>>> cc.get(:Super1,'test1','bucket1',:count => 5)
>>> => #<OrderedHash {"3"=>"Item 3", "4"=>"Item 4"}>
>>>
>>>
>>> 9) I have to set the count to 6 to return all 3 columns:
>>>
>>>>> cc.get(:Super1,'test1','bucket1',:count => 6)
>>> => #<OrderedHash {"6"=>"Item 6", "3"=>"Item 3", "4"=>"Item 4"}>
>>>
>>>
>>> The same thing doesn't happen when I remove only the super column key
>>> ('bucket1').
>>>
>>> Here's the reference to the Ruby client I used for the example, but
>>> the problem is not client specific.
>>> http://blog.evanweaver.com/files/doc/fauna/cassandra/files/README_rdoc.html
>>>
>>
>

Mime
View raw message