FEATURE: per host regular jobs

These are jobs that will run on every host that is running discourse.

If you have multiple hosts running the same site you get independent
schedules
This commit is contained in:
Sam
2015-06-26 13:32:08 +10:00
parent ba1cf44d0f
commit d6d9a7fa09
4 changed files with 134 additions and 38 deletions

View File

@ -86,6 +86,7 @@ module Scheduler
end
def write!
clear!
redis.set key, {
next_run: @next_run,
@ -95,7 +96,7 @@ module Scheduler
current_owner: @current_owner
}.to_json
redis.zadd Manager.queue_key, @next_run , @klass
redis.zadd queue_key, @next_run , @klass
end
def del!
@ -104,7 +105,19 @@ module Scheduler
end
def key
Manager.schedule_key(@klass)
if @klass.is_per_host
Manager.schedule_key(@klass, @manager.hostname)
else
Manager.schedule_key(@klass)
end
end
def queue_key
if @klass.is_per_host
Manager.queue_key(@manager.hostname)
else
Manager.queue_key
end
end
def redis
@ -114,7 +127,7 @@ module Scheduler
private
def clear!
redis.del key
redis.zrem Manager.queue_key, @klass
redis.zrem queue_key, @klass
end
end