Merge pull request #2257 from vikhyat/distributed-mutex

Extract cross-process locking from the scheduler into DistributedMutex
This commit is contained in:
Sam
2014-04-14 10:13:18 +10:00
4 changed files with 100 additions and 33 deletions
+9 -7
View File
@@ -143,15 +143,17 @@ module ::PollPlugin
return if is_closed?
# Get the user's current vote.
vote = get_vote(user)
vote = nil unless details.keys.include? vote
DistributedMutex.new(details_key).synchronize do
vote = get_vote(user)
vote = nil unless details.keys.include? vote
new_details = details.dup
new_details[vote] -= 1 if vote
new_details[option] += 1
new_details = details.dup
new_details[vote] -= 1 if vote
new_details[option] += 1
::PluginStore.set("poll", vote_key(user), option)
set_details! new_details
::PluginStore.set("poll", vote_key(user), option)
set_details! new_details
end
end
def serialize(user)