All -

I just started working with Riak, and am using the riak-client Ruby gem.

When I delete a key from a bucket, and try to fetch the value associated with 
that key, I get a 404 error (which is reasonable).  However, it remains in the 
bucket's list of keys (i.e. the value returned by bucket.keys().  Why is the 
key still reported to exist in the bucket? Is bucket.keys cached, and therefore 
unaware of the deletion? Here's a riak-client Ruby script and its output in irb 
that illustrates this:

ree-1.8.7-2010.02 :001 > require 'riak'
 => true 
ree-1.8.7-2010.02 :002 > 
ree-1.8.7-2010.02 :003 >   client = Riak::Client.new
 => #<Riak::Client http://127.0.0.1:8098> 
ree-1.8.7-2010.02 :004 > bucket = client['links']
 => #<Riak::Bucket {links}> 
ree-1.8.7-2010.02 :005 > key = bucket.keys.first
 => "4000-17.xml" 
ree-1.8.7-2010.02 :006 > object = bucket[key]
 => #<Riak::RObject {links,4000-17.xml} [text/xml]:(6430 bytes)> 
ree-1.8.7-2010.02 :007 > object.delete
 => #<Riak::RObject {links,4000-17.xml} [text/xml]:(6430 bytes)> 
ree-1.8.7-2010.02 :008 > bucket.keys.first
 => "4000-17.xml" 
ree-1.8.7-2010.02 :009 > object = bucket[key]
Riak::HTTPFailedRequest: Expected [200, 300] from Riak but received 404. not 
found

        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/net_http_backend.rb:55:in
 `perform'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1054:in 
`request'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:2142:in 
`reading_body'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1053:in 
`request'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1037:in 
`request'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:543:in 
`start'
        from 
/Users/kbennett/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1035:in 
`request'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/net_http_backend.rb:47:in
 `perform'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/net_http_backend.rb:46:in
 `tap'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/net_http_backend.rb:46:in
 `perform'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/http_backend/transport_methods.rb:59:in
 `get'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/client/http_backend.rb:72:in
 `fetch_object'
        from 
/Users/kbennett/.rvm/gems/ree-1.8.7-2010.02/gems/riak-client-0.9.4/lib/riak/bucket.rb:101:in
 `[]'
        from riak-delete-failure.rb:9

Thanks,
Keith



_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to