myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [3705] trunk: Added delayed_job to monitor servic


From: noreply
Subject: [myexperiment-hackers] [3705] trunk: Added delayed_job to monitor service deprecations and add curation tags to affected workflows
Date: Wed, 11 Sep 2013 11:16:38 +0000 (UTC)

Revision
3705
Author
fbacall
Date
2013-09-11 11:16:38 +0000 (Wed, 11 Sep 2013)

Log Message

Added delayed_job to monitor service deprecations and add curation tags to affected workflows

Modified Paths

Added Paths

Diff

Modified: trunk/Gemfile (3704 => 3705)


--- trunk/Gemfile	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/Gemfile	2013-09-11 11:16:38 UTC (rev 3705)
@@ -30,4 +30,5 @@
 gem "open_id_authentication", "~> 1.1.0"
 gem "simple-rss", "~> 1.2.3"
 gem "net-http-persistent", "~> 2.8"
+gem "delayed_job", "~>2.0.4"
 

Modified: trunk/Rakefile (3704 => 3705)


--- trunk/Rakefile	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/Rakefile	2013-09-11 11:16:38 UTC (rev 3705)
@@ -11,6 +11,12 @@
 require 'sunspot/rails/tasks'
 require 'sunspot/solr/tasks'
 
+begin
+  gem 'delayed_job', '~>2.0.4'
+  require 'delayed/tasks'
+rescue LoadError
+  STDERR.puts "Run `rake gems:install` to install delayed_job"
+end
 desc 'Rebuild Solr index'
 task "myexp:refresh:solr" do
   require File.dirname(__FILE__) + '/config/environment'

Modified: trunk/app/models/curation_event.rb (3704 => 3705)


--- trunk/app/models/curation_event.rb	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/app/models/curation_event.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -10,7 +10,7 @@
 
   format_attribute :details
 
-  validates_presence_of :user, :category
+  validates_presence_of :category
 
   def label
     category

Modified: trunk/app/models/workflow.rb (3704 => 3705)


--- trunk/app/models/workflow.rb	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/app/models/workflow.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -30,6 +30,7 @@
   has_many :workflow_processors, :dependent => :destroy
   has_many :workflow_ports, :dependent => :destroy
   has_many :semantic_annotations, :as => :subject, :dependent => :destroy
+  has_many :curation_events, :as => :object
 
   before_validation :check_unique_name
   before_validation :apply_extracted_metadata

Modified: trunk/app/views/contributions/curation.rhtml (3704 => 3705)


--- trunk/app/views/contributions/curation.rhtml	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/app/views/contributions/curation.rhtml	2013-09-11 11:16:38 UTC (rev 3705)
@@ -11,7 +11,11 @@
         <table class="comment">
           <tr>
             <td class="avatar" rowspan="3">
-              <%= contributor(event.user_id, 'User', true, 60) %>
+              <% if event.user %>
+                <%= contributor(event.user_id, 'User', true, 60) %>
+              <% else %>
+                System
+              <% end %>
             </td>
             <td class="header" height="1.2em">
               <%= datetime event.created_at -%>

Added: trunk/config/initializers/service_deprecation_watcher.rb (0 => 3705)


--- trunk/config/initializers/service_deprecation_watcher.rb	                        (rev 0)
+++ trunk/config/initializers/service_deprecation_watcher.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -0,0 +1,12 @@
+# myExperiment: config/initializers/service_deprecation_watcher.rb
+#
+# Copyright (c) 2013 University of Manchester and the University of Southampton.
+# See license.txt for details.
+
+if ActiveRecord::Base.connection.table_exists?('delayed_jobs')
+  Delayed::Worker.backend = :active_record
+
+  unless Delayed::Job.exists?(:handler => ServiceDeprecationJob.new.to_yaml)
+    Delayed::Job.enqueue(ServiceDeprecationJob.new, 1, 5.minutes.from_now)
+  end
+end

Added: trunk/db/migrate/20130910094137_create_delayed_jobs.rb (0 => 3705)


--- trunk/db/migrate/20130910094137_create_delayed_jobs.rb	                        (rev 0)
+++ trunk/db/migrate/20130910094137_create_delayed_jobs.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -0,0 +1,21 @@
+class CreateDelayedJobs < ActiveRecord::Migration
+  def self.up
+    create_table :delayed_jobs, :force => true do |table|
+      table.integer  :priority, :default => 0      # Allows some jobs to jump to the front of the queue
+      table.integer  :attempts, :default => 0      # Provides for retries, but still fail eventually.
+      table.text     :handler                      # YAML-encoded string of the object that will do work
+      table.text     :last_error                   # reason for last failure (See Note below)
+      table.datetime :run_at                       # When to run. Could be Time.zone.now for immediately, or sometime in the future.
+      table.datetime :locked_at                    # Set when a client is working on this object
+      table.datetime :failed_at                    # Set when all retries have failed (actually, by default, the record is deleted instead)
+      table.string   :locked_by                    # Who is working on this object (if locked)
+      table.timestamps
+    end
+	
+    add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
+  end
+  
+  def self.down
+    drop_table :delayed_jobs  
+  end
+end
\ No newline at end of file

Modified: trunk/db/schema.rb (3704 => 3705)


--- trunk/db/schema.rb	2013-09-11 11:13:15 UTC (rev 3704)
+++ trunk/db/schema.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20130423091433) do
+ActiveRecord::Schema.define(:version => 20130910094137) do
 
   create_table "activities", :force => true do |t|
     t.string   "subject_type"
@@ -216,6 +216,21 @@
     t.datetime "updated_at"
   end
 
+  create_table "delayed_jobs", :force => true do |t|
+    t.integer  "priority",   :default => 0
+    t.integer  "attempts",   :default => 0
+    t.text     "handler"
+    t.text     "last_error"
+    t.datetime "run_at"
+    t.datetime "locked_at"
+    t.datetime "failed_at"
+    t.string   "locked_by"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+  end
+
+  add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
+
   create_table "deprecation_events", :force => true do |t|
     t.string   "title"
     t.datetime "date"

Added: trunk/lib/service_deprecation_job.rb (0 => 3705)


--- trunk/lib/service_deprecation_job.rb	                        (rev 0)
+++ trunk/lib/service_deprecation_job.rb	2013-09-11 11:16:38 UTC (rev 3705)
@@ -0,0 +1,24 @@
+# myExperiment: lib/service_deprecation_job.rb
+#
+# Copyright (c) 2013 University of Manchester and the University of Southampton.
+# See license.txt for details.
+
+class ServiceDeprecationJob
+  def perform
+    Rails.logger.info("Checking for workflows with deprecated services...")
+    DeprecationEvent.all.each do |event|
+      if event.date.past?
+        event.affected_workflows.each do |workflow|
+          unless workflow.curation_events.exists?(:category => 'decommissioned services')
+            Rails.logger.info("Workflow #{workflow.id} has deprecated services (Deprecation Event #{event.id})")
+            details = "Deprecation Event #{event.id}: #{event.details}"
+            CurationEvent.create(:category => 'decommissioned services', :object => workflow, :details => details)
+          end
+        end
+      end
+    end
+
+    # Do it again
+    Delayed::Job.enqueue(ServiceDeprecationJob.new, 1, 1.day.from_now)
+  end
+end
\ No newline at end of file

Added: trunk/script/delayed_job (0 => 3705)


--- trunk/script/delayed_job	                        (rev 0)
+++ trunk/script/delayed_job	2013-09-11 11:16:38 UTC (rev 3705)
@@ -0,0 +1,5 @@
+#!/usr/bin/env ruby
+
+require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
+require 'delayed/command'
+Delayed::Command.new(ARGV).daemonize
Property changes on: trunk/script/delayed_job
___________________________________________________________________

Added: svn:executable


reply via email to

[Prev in Thread] Current Thread [Next in Thread]