You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Bob Florian <bf...@gmail.com> on 2010/03/22 23:13:40 UTC

Deleting and re-inserting row causes error in get_slice count parameter

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

Re: Deleting and re-inserting row causes error in get_slice count parameter

Posted by Bob Florian <bf...@gmail.com>.
Sure thing.  Here it is:
https://issues.apache.org/jira/browse/CASSANDRA-920

On Thu, Mar 25, 2010 at 4:44 PM, Jonathan Ellis <jb...@gmail.com> wrote:
> Can you create a ticket with a test case?
>
> On Thu, Mar 25, 2010 at 3:39 PM, Bob Florian <bf...@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 <jb...@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 <bf...@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
>>>>
>>>
>>
>

Re: Deleting and re-inserting row causes error in get_slice count parameter

Posted by Jonathan Ellis <jb...@gmail.com>.
Can you create a ticket with a test case?

On Thu, Mar 25, 2010 at 3:39 PM, Bob Florian <bf...@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 <jb...@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 <bf...@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
>>>
>>
>

Re: Deleting and re-inserting row causes error in get_slice count parameter

Posted by Bob Florian <bf...@gmail.com>.
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 <jb...@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 <bf...@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
>>
>

Re: Deleting and re-inserting row causes error in get_slice count parameter

Posted by Jonathan Ellis <jb...@gmail.com>.
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 <bf...@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
>