hive-runner 2.1.21 → 2.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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