harmoniser 0.11.0 → 0.12.0
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/harmoniser/cli.rb +22 -17
- data/lib/harmoniser/connection.rb +8 -11
- data/lib/harmoniser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9feb1146437db2d23bb56ef1a72e47ef0912dbbc02b776c2ef026db44dc687e
|
4
|
+
data.tar.gz: 79dfe110ea228ba5ae58062c575768c8cc5747228a7a4a5432c36a686da7113d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47e94a951a8200b1e2ce2287f4fad5d4dda4ac6d4bf4d4e21a7f0bb03a51c8d95a949f0ef8dccc1f873558741ece21a0de89198d0d4325228869b0ad985d098a
|
7
|
+
data.tar.gz: d7d11b42621ce764702a408a3c1f789326cef84dfa15ad24d6f8c84ba5b2cd28ce4f4ca1496fd38bfc1aedb1a0d89381adf19825c76ef6d310389173782a03bd
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.12.0] - 2024-12-22
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
- Perform retries connecting to RabbitMQ only if Harmoniser runs as the main process
|
7
|
+
- Change from IO.pipe to Thread::Queue so that an OS signal is exchanged through a queue safely.
|
8
|
+
|
3
9
|
## [0.11.0] - 2024-10-09
|
4
10
|
|
5
11
|
### Added
|
data/lib/harmoniser/cli.rb
CHANGED
@@ -20,6 +20,7 @@ module Harmoniser
|
|
20
20
|
def initialize
|
21
21
|
@configuration = Harmoniser.default_configuration
|
22
22
|
@logger = Harmoniser.logger
|
23
|
+
@queue = Thread::Queue.new
|
23
24
|
end
|
24
25
|
|
25
26
|
def call
|
@@ -38,39 +39,43 @@ module Harmoniser
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def define_signals
|
41
|
-
@read_io, @write_io = IO.pipe
|
42
|
-
|
43
42
|
["INT", "TERM", "USR1"].each do |sig|
|
44
43
|
Signal.trap(sig) do
|
45
|
-
@
|
44
|
+
@queue.push(sig)
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
50
49
|
def run
|
51
|
-
@launcher.start
|
52
|
-
|
53
50
|
define_signals
|
54
|
-
|
55
|
-
|
56
|
-
signal = @read_io.gets.strip
|
57
|
-
handle_signal(signal)
|
58
|
-
end
|
51
|
+
start_launcher
|
52
|
+
await_signal
|
59
53
|
rescue Interrupt
|
60
|
-
|
61
|
-
@read_io.close
|
62
|
-
@launcher.stop
|
54
|
+
stop_launcher
|
63
55
|
exit(0)
|
64
56
|
rescue SigUsr1
|
65
|
-
|
66
|
-
@read_io.close
|
67
|
-
@launcher.stop
|
57
|
+
stop_launcher
|
68
58
|
exit(128 + 10)
|
69
59
|
end
|
70
60
|
|
71
|
-
def
|
61
|
+
def await_signal
|
62
|
+
signal = @queue.pop
|
72
63
|
logger.info("Signal received: signal = `#{signal}`")
|
73
64
|
SIGNAL_HANDLERS[signal].call(self, signal)
|
74
65
|
end
|
66
|
+
|
67
|
+
def start_launcher
|
68
|
+
Thread.new do
|
69
|
+
await_signal
|
70
|
+
end.tap do |t|
|
71
|
+
t.abort_on_exception = true
|
72
|
+
t.report_on_exception = false
|
73
|
+
@launcher.start
|
74
|
+
end.kill
|
75
|
+
end
|
76
|
+
|
77
|
+
def stop_launcher
|
78
|
+
@launcher.stop
|
79
|
+
end
|
75
80
|
end
|
76
81
|
end
|
@@ -32,14 +32,19 @@ module Harmoniser
|
|
32
32
|
"<#{self.class.name}>:#{object_id} #{user}@#{host}:#{port}, connection_name = `#{connection_name}`, vhost = `#{vhost}`"
|
33
33
|
end
|
34
34
|
|
35
|
-
# TODO Only perform retries when Harmoniser.server?
|
36
35
|
def start
|
36
|
+
return @bunny.start unless Harmoniser.server?
|
37
|
+
|
38
|
+
retryable_start
|
39
|
+
end
|
40
|
+
|
41
|
+
def retryable_start
|
37
42
|
retries = 0
|
38
43
|
begin
|
39
|
-
|
44
|
+
@bunny.start
|
40
45
|
rescue => e
|
41
46
|
@logger.error("Connection attempt failed: retries = `#{retries}`, error_class = `#{e.class}`, error_message = `#{e.message}`")
|
42
|
-
|
47
|
+
sleep(1)
|
43
48
|
retries += 1
|
44
49
|
retry
|
45
50
|
end
|
@@ -97,13 +102,5 @@ module Harmoniser
|
|
97
102
|
def vhost
|
98
103
|
@bunny.vhost
|
99
104
|
end
|
100
|
-
|
101
|
-
# TODO Use Signal handler defined at Harmoniser::CLI instead of rescuing SignalException?
|
102
|
-
def with_signal_handler
|
103
|
-
yield if block_given?
|
104
|
-
rescue SignalException => e
|
105
|
-
@logger.info("Signal received: signal = `#{Signal.signame(e.signo)}`")
|
106
|
-
Harmoniser.server? ? exit(0) : raise
|
107
|
-
end
|
108
105
|
end
|
109
106
|
end
|
data/lib/harmoniser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harmoniser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Lloret
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|