From 624bea144523777c1830f307ecfd218fc927caeb Mon Sep 17 00:00:00 2001
From: Mike Bryant <m@ocado.com>
Date: Wed, 27 Jan 2016 13:23:23 +0000
Subject: Use the ceiling instead of the floor when calculating the desired
 number of jobs

If the number of jobs is large enough, using the floor won't guarantee completion
within the desired interval.
Example:
- interval: 3600
- average duration: 5
- number of nodes: 900
This gives 1.25 as the desired number of threads.
Flooring it means that nodes will only be collected once every ~75 minutes.

By using the ceiling and slightly over-estimating the desired interval is achieved
---
 lib/oxidized/jobs.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'lib/oxidized')

diff --git a/lib/oxidized/jobs.rb b/lib/oxidized/jobs.rb
index ff7f92b..60a83f4 100644
--- a/lib/oxidized/jobs.rb
+++ b/lib/oxidized/jobs.rb
@@ -26,7 +26,7 @@ module Oxidized
     end
 
     def new_count
-      @want = ((@nodes.size * @duration) / @interval).to_i
+      @want = ((@nodes.size * @duration) / @interval).ceil
       @want = 1 if @want < 1
       @want = @nodes.size if @want > @nodes.size
       @want = @max if @want > @max
-- 
cgit v1.2.3