hive-runner 2.1.14 → 2.1.15

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: 75b2cb3db1a4e59f6dfbc43f599cabcf0fa3b280
4
- data.tar.gz: 49742a9d5f45a3eef3a7e5f3ff5456d45ccf02e9
3
+ metadata.gz: f50a69b0bcf931b99a301b4e6db9e81d6292daa0
4
+ data.tar.gz: 7729887c1a100db4c45bcc28af5174780efe7d27
5
5
  SHA512:
6
- metadata.gz: 1522470f23425e86683f84a72c08a96cfb2007273bf999b8b4ae3898ec5dbce0a5148b8ef13e8da24999f375cb151dca80f5aa0a3a209f8abb9caeaa4bfeec6d
7
- data.tar.gz: a5e23c39abf28ebb1893acc405df5e5c59d475d8c2df504a1723ea013bfbc0b7b3ab2e7898430e624014d41ae4334fda711c6560642a83ea8b670fb6fa67113b
6
+ metadata.gz: 1519f6ac87ad0327098b7b226e9ccfb35e7239cfec0be50149b71e82ae6e16330fda99369f7540b294332a4fa59c1df61135ede1102d8a0f405649a3e43a3028
7
+ data.tar.gz: 626b597752004916c052f45831774b5c904452d1cbf3608db4e5af5b1a2e42d2c64f2496a1f133d61185cfde83197f5c4c8aa13119213614942db691d0826d4c
@@ -110,9 +110,12 @@ module Hive
110
110
  def terminate
111
111
  if @pgid
112
112
  begin
113
+ @log.debug "Ensuring process #{@pgid} is terminated"
113
114
  Process.kill(-9, @pgid)
115
+ rescue Errno::ESRCH
116
+ @log.debug "Process #{@pgid} already dead"
114
117
  rescue => e
115
- @log.warn e
118
+ @log.warn "Unexpected error while terminating process #{@pgid}: #{e}"
116
119
  end
117
120
  @pgid = nil
118
121
  end
data/lib/hive/log.rb CHANGED
@@ -4,6 +4,9 @@ module Hive
4
4
  # Hive logging
5
5
  # Allow logging to be written to multiple locations.
6
6
  class Log
7
+ attr_accessor :hive_mind
8
+ attr_accessor :default_progname
9
+
7
10
  # Create the logger:
8
11
  #
9
12
  # # No log files will be written
@@ -34,8 +37,8 @@ module Hive
34
37
  # log.add_logger( STDOUT, 'DEBUG' )
35
38
  def add_logger(stream, level)
36
39
  log = MonoLogger.new(stream)
37
- log.formatter = proc do |severity, datetime, _progname, msg|
38
- "#{severity[0, 1]} #{datetime.strftime('%Y-%m-%d %H:%M:%S')}: #{msg}\n"
40
+ log.formatter = proc do |severity, datetime, progname, msg|
41
+ "#{severity[0, 1]} #{datetime.strftime('%Y-%m-%d %H:%M:%S')} -- #{progname}: #{msg}\n"
39
42
  end
40
43
  log.level = MonoLogger.const_get(level)
41
44
  @loggers[stream] = log
@@ -51,10 +54,58 @@ module Hive
51
54
  @loggers.delete(stream)
52
55
  end
53
56
 
54
- MonoLogger::Severity.constants.each do |level|
55
- define_method(level.downcase) do |*args|
56
- @loggers.each { |_s, l| l.send(level.downcase, *args) }
57
+ # These methods were originally created using define_method as they are all
58
+ # the same. However, blocks cannot be used with define_method.
59
+ def debug(*args, &block)
60
+ write_log('debug', *args, &block)
61
+ end
62
+
63
+ def info(*args, &block)
64
+ write_log('info', *args, &block)
65
+ end
66
+
67
+ def warn(*args, &block)
68
+ write_log('warn', *args, &block)
69
+ end
70
+
71
+ def error(*args, &block)
72
+ write_log('error', *args, &block)
73
+ end
74
+
75
+ def fatal(*args, &block)
76
+ write_log('fatal', *args, &block)
77
+ end
78
+
79
+ def unknown(*args, &block)
80
+ write_log('unknown', *args, &block)
81
+ end
82
+
83
+ # Currently this will clear the Hive Mind log but do nothing to the local
84
+ # files
85
+ def clear(component = nil)
86
+ if self.hive_mind
87
+ self.hive_mind.clear_state component: component
88
+ end
89
+ end
90
+
91
+ private
92
+ def write_log(level, *args, &block)
93
+ progname = ( block && args.length > 0 ) ? args[0] : @default_progname
94
+
95
+ @loggers.each do |_s, l|
96
+ l.send(level, progname) { block ? yield : args[0] }
97
+ end
98
+
99
+ if self.hive_mind
100
+ params = {
101
+ state: level,
102
+ component: progname,
103
+ message: block ? yield : args[0]
104
+ }
105
+
106
+ self.hive_mind.set_state params
57
107
  end
58
108
  end
109
+
59
110
  end
60
111
  end
data/lib/hive/register.rb CHANGED
@@ -49,6 +49,11 @@ module Hive
49
49
  housekeeping
50
50
  check_controllers
51
51
  sleep Hive.config.timings.controller_loop_interval
52
+
53
+ # For the moment, clear Hive Mind logs each time
54
+ # TODO Something better so that warnings and errors are not hidden
55
+ Hive.logger.clear
56
+ Hive.logger.debug('Hive Mind log cleared')
52
57
  end
53
58
  end
54
59
 
@@ -5,6 +5,7 @@ module Hive
5
5
  # The Shell worker
6
6
  class Shell < Worker
7
7
  def initialize(options = {})
8
+ @default_component ||= "#{self.class.to_s} [#{$$}]"
8
9
  super
9
10
  end
10
11
 
@@ -16,6 +17,10 @@ module Hive
16
17
  @options['queues'] || []
17
18
  end
18
19
 
20
+ # Parameters for uniquely identifying the device
21
+ def hive_mind_device_identifiers
22
+ { id: @hive_id }
23
+ end
19
24
  end
20
25
  end
21
26
  end
data/lib/hive/worker.rb CHANGED
@@ -30,6 +30,7 @@ module Hive
30
30
  @parent_pid = @options['parent_pid']
31
31
  @device_id = @options['id']
32
32
  @hive_id = @options['hive_id']
33
+ @default_component ||= self.class.to_s
33
34
  @hive_mind ||= mind_meld_klass.new(
34
35
  url: Chamber.env.network.hive_mind? ? Chamber.env.network.hive_mind : nil,
35
36
  pem: Chamber.env.network.cert ? Chamber.env.network.cert : nil,
@@ -45,6 +46,8 @@ module Hive
45
46
  "#{LOG_DIRECTORY}/#{pid}.#{@device_identity}.log",
46
47
  Hive.config.logging.worker_level || 'INFO'
47
48
  )
49
+ @log.hive_mind = @hive_mind
50
+ @log.default_progname = @default_component
48
51
 
49
52
  self.update_queues
50
53
 
@@ -70,8 +73,9 @@ module Hive
70
73
  diagnostics
71
74
  update_queues
72
75
  poll_queue
76
+ @log.clear
73
77
  rescue DeviceNotReady => e
74
- @log.info("#{e.message}\n");
78
+ @log.warn("#{e.message}\n");
75
79
  rescue StandardError => e
76
80
  @log.warn("Worker loop aborted: #{e.message}\n : #{e.backtrace.join("\n : ")}")
77
81
  end
@@ -317,7 +321,6 @@ module Hive
317
321
  end
318
322
 
319
323
  begin
320
- @log.info("Job: #{job.inspect}")
321
324
  if conf_file = lion_config(checkout)
322
325
  Res.submit_results(
323
326
  reporter: :lion,
data/lib/hive.rb CHANGED
@@ -54,7 +54,14 @@ module Hive
54
54
  if Hive.config.logging.console_level?
55
55
  @logger.add_logger(STDOUT, Hive.config.logging.console_level)
56
56
  end
57
+
58
+ @logger.default_progname = 'Hive core'
59
+ end
60
+
61
+ if ! @logger.hive_mind
62
+ @logger.hive_mind = @hive_mind
57
63
  end
64
+
58
65
  @logger
59
66
  end
60
67
 
@@ -103,6 +110,9 @@ module Hive
103
110
  )
104
111
  end
105
112
  @hive_mind.flush_statistics
113
+ if @logger
114
+ @logger.hive_mind = @hive_mind
115
+ end
106
116
  end
107
117
  end
108
118
 
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.14
4
+ version: 2.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Haig
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-14 00:00:00.000000000 Z
11
+ date: 2016-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chamber
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.1.8
117
+ version: 0.1.12
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.1.8
124
+ version: 0.1.12
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: code_cache
127
127
  requirement: !ruby/object:Gem::Requirement