Keith,

There was a pull-request issue out for this on the Github project 
(https://github.com/seancribbs/ripple/pull/168). For various reasons, the list 
of keys is memoized in the Riak::Bucket instance.  Passing :reload => true to 
the #keys method will cause it to refresh.  I like to discourage list-keys, but 
with the memoized list you don't shoot yourself in the foot as often.

Sean Cribbs <[email protected]>
Developer Advocate
Basho Technologies, Inc.
http://basho.com/

On May 26, 2011, at 10:29 AM, Keith Bennett wrote:

> 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
> [email protected]
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to