hive-runner 2.1.14 → 2.1.15

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: 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