14878: Skip flock() when testing priority updater.
authorTom Clegg <tclegg@veritasgenetics.com>
Tue, 28 May 2019 15:04:35 +0000 (11:04 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Tue, 28 May 2019 15:04:35 +0000 (11:04 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

services/api/lib/update_priority.rb
services/api/test/unit/update_priority_test.rb

index 21cd74bae67d3cbf94257284aedf05ab20aaad57..8bf3e150d3ad119e4558f2fb78e8ad1b00d57c1a 100644 (file)
@@ -12,14 +12,14 @@ module UpdatePriority
   #
   # If container priority=0 but there are committed container requests
   # for it with priority>0, update priority.
-  def self.update_priority
+  def self.update_priority(nolock: false)
     if !File.owned?(Rails.root.join('tmp'))
       Rails.logger.warn("UpdatePriority: not owner of #{Rails.root}/tmp, skipping")
       return
     end
     lockfile = Rails.root.join('tmp', 'update_priority.lock')
     File.open(lockfile, File::RDWR|File::CREAT, 0600) do |f|
-      return unless f.flock(File::LOCK_NB|File::LOCK_EX)
+      return unless nolock || f.flock(File::LOCK_NB|File::LOCK_EX)
 
       # priority>0 but should be 0:
       ActiveRecord::Base.connection.
index 2d28d3fb690e50c5702635fb772dd5d54bec9ad8..c1f60d91d02467571c8d9c720f0534d8164a9cfd 100644 (file)
@@ -10,13 +10,13 @@ class UpdatePriorityTest < ActiveSupport::TestCase
     uuid = containers(:running).uuid
     ActiveRecord::Base.connection.exec_query('UPDATE containers SET priority=0 WHERE uuid=$1', 'test-setup', [[nil, uuid]])
     assert_equal 0, Container.find_by_uuid(uuid).priority
-    UpdatePriority.update_priority
+    UpdatePriority.update_priority(nolock: true)
     assert_operator 0, :<, Container.find_by_uuid(uuid).priority
 
     uuid = containers(:queued).uuid
     ActiveRecord::Base.connection.exec_query('UPDATE containers SET priority=0 WHERE uuid=$1', 'test-setup', [[nil, uuid]])
     assert_equal 0, Container.find_by_uuid(uuid).priority
-    UpdatePriority.update_priority
+    UpdatePriority.update_priority(nolock: true)
     assert_operator 0, :<, Container.find_by_uuid(uuid).priority
   end
 
@@ -24,7 +24,7 @@ class UpdatePriorityTest < ActiveSupport::TestCase
     uuid = containers(:running).uuid
     ActiveRecord::Base.connection.exec_query('DELETE FROM container_requests WHERE container_uuid=$1', 'test-setup', [[nil, uuid]])
     assert_operator 0, :<, Container.find_by_uuid(uuid).priority
-    UpdatePriority.update_priority
+    UpdatePriority.update_priority(nolock: true)
     assert_equal 0, Container.find_by_uuid(uuid).priority
   end
 end