[ 
https://issues.apache.org/jira/browse/CASSANDRA-920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12855149#action_12855149
 ] 

Ryan King commented on CASSANDRA-920:
-------------------------------------

I've rewritten this in terms of our cassandra.gem test suite and can't seem to 
find a bug in the client. It fails on the last line.

{code}
    @twitter.insert(:StatusRelationships, key,  {'user_timelines' => 
{...@uuids[0] => 'Item 0', @uuids[1] => 'Item 1', @uuids[2] => 'Item 2'}})
    @twitter.remove(:StatusRelationships, key)

    items = @twitter.get(:StatusRelationships, key, 'user_timelines')
    assert_equal 0, items.size

    @twitter.insert(:StatusRelationships, key,
        {'user_timelines' => {...@uuids[2] => 'Item 2', @uuids[3] => 'Item 3', 
@uuids[4] => 'Item 4'}})

    items = @twitter.get(:StatusRelationships, key, 'user_timelines')
    assert_equal 3, items.size

    items = @twitter.get(:StatusRelationships,key,'user_timelines',:count => 3)
    assert_equal 3, items.size 
{code}

And the server logs for this whole test:

{code}
DEBUG - batch_mutate
DEBUG - insert writing local key test_get_super_sub_keys_with_count_after_remove
DEBUG - remove
DEBUG - insert writing local key test_get_super_sub_keys_with_count_after_remove
DEBUG - multiget_slice
DEBUG - weakreadlocal reading SliceFromReadCommand(table='Twitter', 
key='test_get_super_sub_keys_with_count_after_remove', 
column_parent='QueryPath(columnFamilyName='StatusRelationships', 
superColumnName='[...@746a63d3', columnName='null')', start='', finish='', 
reversed=false, count=100)
DEBUG - batch_mutate
DEBUG - insert writing local key test_get_super_sub_keys_with_count_after_remove
DEBUG - multiget_slice
DEBUG - weakreadlocal reading SliceFromReadCommand(table='Twitter', 
key='test_get_super_sub_keys_with_count_after_remove', 
column_parent='QueryPath(columnFamilyName='StatusRelationships', 
superColumnName='[...@3bd840d9', columnName='null')', start='', finish='', 
reversed=false, count=100)
DEBUG - collecting 
93814000-b668-11b2-8e6a-06dc05f11207:false:6...@1270760311002397
DEBUG - collecting 
13814000-4eff-11b3-88b0-351600af16aa:false:6...@1270760311002397
DEBUG - collecting 
13814000-802c-11b4-8782-bede78b81183:false:6...@1270760311069304
DEBUG - collecting 
13814000-e286-11b6-9ea9-48a9edd974b6:false:6...@1270760311069304
DEBUG - collecting 
13814000-a73a-11bb-8a14-b8d289de6d53:false:6...@1270760311069304
DEBUG - multiget_slice
DEBUG - weakreadlocal reading SliceFromReadCommand(table='Twitter', 
key='test_get_super_sub_keys_with_count_after_remove', 
column_parent='QueryPath(columnFamilyName='StatusRelationships', 
superColumnName='[...@6e37d490', columnName='null')', start='', finish='', 
reversed=false, count=3)
DEBUG - collecting 
93814000-b668-11b2-8e6a-06dc05f11207:false:6...@1270760311002397
DEBUG - collecting 
13814000-4eff-11b3-88b0-351600af16aa:false:6...@1270760311002397
DEBUG - collecting 
13814000-802c-11b4-8782-bede78b81183:false:6...@1270760311069304
DEBUG - GC for ParNew: 7 ms, 20659648 reclaimed leaving 19819056 used; max is 
1211826176
{code}

And the thrift structures for the failing multiget_slice

{code}
<CassandraThrift::ColumnParent column_family:"StatusRelationships", 
super_column:"user_timelines">
<CassandraThrift::SlicePredicate slice_range:<CassandraThrift::SliceRange 
start:"", finish:"", reversed:false, count:3>>
{code}


> Deleting and re-inserting row causes error in get_slice count parameter
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-920
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-920
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.5, 0.6
>         Environment: Mac OS/ Java 6
>            Reporter: Bob Florian
>            Assignee: Brandon Williams
>            Priority: Minor
>             Fix For: 0.6.1
>
>         Attachments: 0001_add_system_test.txt
>
>
> 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.
> Test code:
> --------------
> require 'rubygems'
> require 'cassandra'
> cc = Cassandra.new('Keyspace1')
> cc.insert(:Super1,'test-key1',{'bucket1' => {'1' => 'Item 1', '2' => 'Item 
> 2', '5' => 'Item 5'}})
> items = cc.get(:Super1,'test-key1','bucket1')
> puts "returned #{items.size} items, should be 3"
> cc.remove(:Super1,'test-key1')
> items = cc.get(:Super1,'test-key1','bucket1')
> puts "returned #{items.size} items, should be 0"
> cc.insert(:Super1,'test-key1',{'bucket1' => {'3' => 'Item 3', '4' => 'Item 
> 4', '6' => 'Item 6'}})
> items = cc.get(:Super1,'test-key1','bucket1')
> puts "returned #{items.size} items, should be 3"
> items = cc.get(:Super1,'test-key1','bucket1',:count => 3)
> puts "returned #{items.size} items, should be 3"
> items = cc.get(:Super1,'test-key1','bucket1',:count => 4)
> puts "returned #{items.size} items, should be 3"
> items = cc.get(:Super1,'test-key1','bucket1',:count => 5)
> puts "returned #{items.size} items, should be 3"
> items = cc.get(:Super1,'test-key1','bucket1',:count => 6)
> puts "returned #{items.size} items, should be 3"
> Output:
> returned 3 items, should be 3
> returned 0 items, should be 0
> returned 3 items, should be 3
> returned 1 items, should be 3
> returned 2 items, should be 3
> returned 2 items, should be 3
> returned 3 items, should be 3
> Ruby library link:
> http://blog.evanweaver.com/files/doc/fauna/cassandra/files/README_rdoc.html

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to