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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b2497d9a253abc7f2b461aead5c9711003afdde
4
- data.tar.gz: a86a5c4c3a66365dbef517639dd55e3685c99016
3
+ metadata.gz: 216a3488b467928dd26057df38e750217a385cee
4
+ data.tar.gz: 53e45b27b62accdeac7c55ec6adcc4ee82cc577b
5
5
  SHA512:
6
- metadata.gz: 6ef83adef1c0bdf1301d3da224d5764805ea31acccc465e01acf85de0c637557c3884cffc143e3fd1569d3cc97d58f868a3919d5cc0b1a0aef1fde507fd05c58
7
- data.tar.gz: c0d4ff7e2fa5f41606b533c4bce1b34a84060ee5b75d813131a75f00b1562603d7b2f90ef85dfee7e6a4cd3fef4da65efd8e32f474c83034ca3148c7709012b1
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
- Process.kill(-9, @pgid) if ! ( @keep_running.nil? || @keep_running.call )
99
- # Do something. Eg, upload log files.
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
 
@@ -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 keep_running?
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.keep_running? }
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
- # Determine whether to keep the worker running
383
- # This just checks the presense of the parent process
384
- def keep_running?
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.21
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-01-25 00:00:00.000000000 Z
11
+ date: 2017-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chamber