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 +4 -4
- data/lib/hive/execution_script.rb +4 -1
- data/lib/hive/log.rb +56 -5
- data/lib/hive/register.rb +5 -0
- data/lib/hive/worker/shell.rb +5 -0
- data/lib/hive/worker.rb +5 -2
- data/lib/hive.rb +10 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f50a69b0bcf931b99a301b4e6db9e81d6292daa0
|
4
|
+
data.tar.gz: 7729887c1a100db4c45bcc28af5174780efe7d27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
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
|
-
|
55
|
-
|
56
|
-
|
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
|
|
data/lib/hive/worker/shell.rb
CHANGED
@@ -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.
|
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.
|
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-
|
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.
|
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.
|
124
|
+
version: 0.1.12
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: code_cache
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|