hive-runner 2.1.21 → 2.1.22
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hive/execution_script.rb +7 -2
- data/lib/hive/worker.rb +43 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 216a3488b467928dd26057df38e750217a385cee
|
4
|
+
data.tar.gz: 53e45b27b62accdeac7c55ec6adcc4ee82cc577b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bf074173c966e0e639cc9826e787581b8a96afa3674589ed271e57c431b61a75fc22bbd74097aec091c98a8f60ec6be6868c521406422fb8b2d9f91368f0cf7
|
7
|
+
data.tar.gz: dd5a30d68ce66bf0e423ccc164fb289f663300f1379ed5f406b5af7dcea76deb1083708a6d061ca57759904c6939186f1f65b622a2c13f3d8cba76c618844e1f
|
@@ -95,8 +95,13 @@ module Hive
|
|
95
95
|
running = false
|
96
96
|
end
|
97
97
|
rescue Timeout::Error
|
98
|
-
|
99
|
-
|
98
|
+
@log.debug("Sub-process keep_running check")
|
99
|
+
if ! ( @keep_running.nil? || @keep_running.call )
|
100
|
+
Process.kill(-9, @pgid)
|
101
|
+
raise TimeoutError.new("Timed out after #{Hive.config.timings.job_timeout} seconds")
|
102
|
+
end
|
103
|
+
|
104
|
+
# TODO Upload in-progress script logs
|
100
105
|
end
|
101
106
|
end
|
102
107
|
|
data/lib/hive/worker.rb
CHANGED
@@ -31,6 +31,7 @@ module Hive
|
|
31
31
|
@device_id = @options['id']
|
32
32
|
@hive_id = @options['hive_id']
|
33
33
|
@default_component ||= self.class.to_s
|
34
|
+
@current_job_start_time = nil
|
34
35
|
@hive_mind ||= mind_meld_klass.new(
|
35
36
|
url: Chamber.env.network.hive_mind? ? Chamber.env.network.hive_mind : nil,
|
36
37
|
pem: Chamber.env.network.cert ? Chamber.env.network.cert : nil,
|
@@ -68,7 +69,7 @@ module Hive
|
|
68
69
|
end
|
69
70
|
|
70
71
|
@log.info('Starting worker')
|
71
|
-
while
|
72
|
+
while keep_worker_running?
|
72
73
|
begin
|
73
74
|
@log.clear
|
74
75
|
update_queues
|
@@ -91,6 +92,7 @@ module Hive
|
|
91
92
|
else
|
92
93
|
@log.info('Job starting')
|
93
94
|
begin
|
95
|
+
@current_job_start_time = Time.now
|
94
96
|
execute_job
|
95
97
|
rescue => e
|
96
98
|
@log.info("Error running test: #{e.message}\n : #{e.backtrace.join("\n :")}")
|
@@ -164,7 +166,7 @@ module Hive
|
|
164
166
|
@script = Hive::ExecutionScript.new(
|
165
167
|
file_system: @file_system,
|
166
168
|
log: @log,
|
167
|
-
keep_running: ->() { self.
|
169
|
+
keep_running: ->() { self.keep_script_running? }
|
168
170
|
)
|
169
171
|
@script.append_bash_cmd "mkdir -p #{@file_system.testbed_path}/#{@job.execution_directory}"
|
170
172
|
@script.append_bash_cmd "cd #{@file_system.testbed_path}/#{@job.execution_directory}"
|
@@ -379,14 +381,48 @@ module Hive
|
|
379
381
|
CodeCache.repo(repository).checkout(:head, checkout_directory, branch) or raise "Unable to checkout repository #{repository}"
|
380
382
|
end
|
381
383
|
|
382
|
-
#
|
383
|
-
|
384
|
-
|
384
|
+
# Keep the worker process running
|
385
|
+
def keep_worker_running?
|
386
|
+
@log.debug("Keep Worker Running check ")
|
387
|
+
if parent_process_dead?
|
388
|
+
@log.info("Think parent process is dead")
|
389
|
+
false
|
390
|
+
else
|
391
|
+
true
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
395
|
+
# Keep the execution script running
|
396
|
+
def keep_script_running?
|
397
|
+
@log.debug("Keep Running check ")
|
398
|
+
if exceeded_time_limit? || parent_process_dead?
|
399
|
+
return false
|
400
|
+
else
|
401
|
+
return true
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
def exceeded_time_limit?
|
406
|
+
if @job && !@job.nil?
|
407
|
+
if max_time = @job.execution_variables.job_timeout rescue nil
|
408
|
+
elapsed = (Time.now - @current_job_start_time).to_i
|
409
|
+
@log.debug("Elapsed = #{elapsed} seconds, Max = #{max_time} minutes")
|
410
|
+
if elapsed > max_time.to_i * 60
|
411
|
+
@log.warn("Job has exceeded max time of #{max_time} minutes")
|
412
|
+
return true
|
413
|
+
end
|
414
|
+
end
|
415
|
+
end
|
416
|
+
false
|
417
|
+
end
|
418
|
+
|
419
|
+
def parent_process_dead?
|
385
420
|
begin
|
386
421
|
Process.getpgid(@parent_pid)
|
387
|
-
true
|
388
|
-
rescue
|
389
422
|
false
|
423
|
+
rescue
|
424
|
+
@log.warn("Parent process appears to have terminated")
|
425
|
+
true
|
390
426
|
end
|
391
427
|
end
|
392
428
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hive-runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Haig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chamber
|