ork icon indicating copy to clipboard operation
ork copied to clipboard

Support quorum options

Open dalecaru opened this issue 10 years ago • 4 comments

This adds support for quorum options in #save, #delete, #reload, ::[] and ::exists? methods.

It adds an options hash as a parameter to the methods mentioned above. The quorum should be set with the :quorum key.

Usage:

# Ork::Model#save
event.save(quorum: { w: 1, dw: 1 }) # same options than Riak::RObject#store method (:r, :w and :dw)

# Ork::Model#delete
event.delete(quorum: 2) # deletes with :rw option

# Ork::Model#reload
event.reload(quorum: 1) # reloads with :r option

# Ork::Model::[]
Event[some_id, quorum: 1] # reads with :r option

# Ork::Model::exists?
Event.exists?(some_id, quorum: 1) # reads with :r option

dalecaru avatar Jan 02 '15 21:01 dalecaru

Did you consider to create a Quorum class to handle all the methods around quorum?

emancu avatar Jan 02 '15 23:01 emancu

I'll do a review to this PR by the end of the week

emancu avatar Jan 05 '15 17:01 emancu

This is an extract of what we are using in a internal project. I agree with you in your comments, but before that, do you agree with the public API?. Is this what you had in mind? (Issue #1)

dalecaru avatar Jan 12 '15 15:01 dalecaru

@DamianCaruso I am sorry this PR is taking so long. I am very busy with toml-rb and i'm in the middle of vacations.

About the public API, I had two completely different ideas, one is covered in this PR, the other one is something like this:

Post.quorum(w: 4).save
Post.quorum(r: 2).reload

I'm not sure right now, I would like to brainstorm about both implementations and API. And also, start thinking on support riak 2.

BTW I don't like to change the [] method to support quorum options. I want to keep that method simple and if you need the quorum option for read, you should use other method.

emancu avatar Jan 26 '15 12:01 emancu