Permalink
Browse files

Use resque-schedule for cleanup

  • Loading branch information...
1 parent 8d178b8 commit fe20a9788a770d93633bda4681bdc580065778a9 @avokhmin avokhmin committed Feb 24, 2014
@@ -0,0 +1,8 @@
+class BuildListsPublishTaskManagerJob
+ @queue = :hook
+
+ def self.perform
+ AbfWorker::BuildListsPublishTaskManager.new.run
+ end
+
+end
@@ -0,0 +1,18 @@
+class CleanBuildListsQueuesJob
+ @queue = :hook
+
+ def self.perform
+ redis = Resque.redis
+ redis.smembers('queues').each do |key|
+ next if key !~ /(user|mass)_build_/
+ queue = "queue:#{key}"
+ if redis.llen(queue) == 0
+ redis.multi do
+ redis.del queue
+ redis.srem 'queues', key
+ end
+ end
+ end
+ end
+
+end
@@ -0,0 +1,10 @@
+class CleanRpmBuildNodeJob
+ @queue = :hook
+
+ def self.perform
+ RpmBuildNode.all.each do |n|
+ n.delete unless n.user_id
+ end
+ end
+
+end
View
@@ -558,7 +558,6 @@ def self.next_build
if task
build_list = BuildList.where(id: task['args'][0]['id']).first
- build_list.cleanup_build_sets
build_list.delayed_add_job_to_abf_worker_queue
build_list
end
@@ -17,12 +17,6 @@ def user
User.where(id: user_id).first
end
- def self.cleanup!
- RpmBuildNode.all.each do |n|
- n.delete unless n.user_id
- end
- end
-
def self.total_statistics
systems, others, busy = 0, 0, 0
RpmBuildNode.all.select{ |n| n.user_id }.each do |n|
View
@@ -27,6 +27,7 @@ class Application < Rails::Application
# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += %W(#{config.root}/app/presenters)
+ config.autoload_paths += %W(#{config.root}/app/jobs)
# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
@@ -10,6 +10,7 @@
unless Rails.env.test?
PerformLater.config.enabled = true # this will default to false if unset
+ Resque.schedule = YAML.load_file(File.join(Rails.root, 'config/resque_schedule.yml')) # load the schedule
end
Resque::Plugins::Status::Hash.expire_in = (24 * 60 * 60) # 24hrs in seconds
View
@@ -0,0 +1,20 @@
+clean_rpm_build_nodes:
+ every:
+ - '1m'
+ class: 'CleanRpmBuildNodeJob'
+ queue: hook
+ description: 'Cleans RPM build nodes'
+
+build_lists_publish_task_manager:
+ every:
+ - '3m'
+ class: 'BuildListsPublishTaskManagerJob'
+ queue: hook
+ description: 'Creates tasks for publishing'
+
+clean_build_lists_queues:
+ every:
+ - '1m'
+ class: 'CleanBuildListsQueuesJob'
+ queue: hook
+ description: 'Cleans build_lists queues'
View
@@ -26,14 +26,6 @@
rake 'activity_feeds:clear', output: 'log/activity_feeds.log'
end
-every 3.minute do
- runner 'AbfWorker::BuildListsPublishTaskManager.new.run', output: 'log/task_manager.log'
-end
-
-every 1.minute do
- runner 'RpmBuildNode.cleanup!'
-end
-
every 1.hour do
rake 'buildlist:clear:outdated_canceling', output: 'log/canceling_build_list_clear.log'
end
@@ -58,7 +58,6 @@ def destroy_from_resque_queue
worker_queue_class,
abf_worker_args
)
- cleanup_build_sets
result
end
@@ -82,17 +81,6 @@ def worker_queue_class
"AbfWorker::#{abf_worker_base_queue.classify}#{abf_worker_priority.capitalize}"
end
- def cleanup_build_sets
- return unless is_a?(BuildList)
- queue = worker_queue_with_priority
- if Resque.redis.llen("queue:#{queue}") == 0
- key = mass_build_id ? MASS_BUILDS_SET : USER_BUILDS_SET
- Resque.redis.srem key, mass_build_id || user_id
- Resque.redis.del "queue:#{queue}"
- Resque.redis.srem 'queues', queue
- end
- end
-
private

0 comments on commit fe20a97

Please sign in to comment.