async-container-supervisor 0.6.0 → 0.6.2
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
- checksums.yaml.gz.sig +0 -0
- data/lib/async/container/supervisor/connection.rb +4 -1
- data/lib/async/container/supervisor/dispatchable.rb +1 -3
- data/lib/async/container/supervisor/memory_monitor.rb +5 -5
- data/lib/async/container/supervisor/server.rb +9 -17
- data/lib/async/container/supervisor/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -30
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9e01edf13b77af9c7b4d0a93869a64233d9121194cdafa33307713208c4c364c
|
|
4
|
+
data.tar.gz: 67bdd6ff907a23d7a3c4049558c20a586ac831ec5aae29eafdf3f0318a5d2470
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 241be150b5fcc3329624d5d21aef08d7fc418a6fd97c8b521c34060dbffe209d1d0802f6b3591a9730f1497fdf92838c605c5316f2032c77ab380de56217aff5
|
|
7
|
+
data.tar.gz: 27013843d5d63de93777e1f39979c8ca416930e15cca536248a81793f193d4b7204c8f8e2d565cb2ff7f8f87be6a661a1e64e9d0e611cbb4b28d17eaefdaa907
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -185,9 +185,12 @@ module Async
|
|
|
185
185
|
if call = @calls[id]
|
|
186
186
|
# Response to a call:
|
|
187
187
|
call.push(**message)
|
|
188
|
-
|
|
188
|
+
elsif message.key?(:do)
|
|
189
189
|
# Incoming call:
|
|
190
190
|
Call.dispatch(self, target, id, message)
|
|
191
|
+
else
|
|
192
|
+
# Likely a response to a timed-out call, ignore it:
|
|
193
|
+
Console.debug(self, "Ignoring message:", message)
|
|
191
194
|
end
|
|
192
195
|
else
|
|
193
196
|
Console.error(self, "Unknown message:", message)
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
require_relative "connection"
|
|
7
7
|
require_relative "endpoint"
|
|
8
8
|
|
|
9
|
-
require "io/stream"
|
|
10
|
-
|
|
11
9
|
module Async
|
|
12
10
|
module Container
|
|
13
11
|
module Supervisor
|
|
@@ -16,7 +14,7 @@ module Async
|
|
|
16
14
|
method_name = "do_#{call.message[:do]}"
|
|
17
15
|
self.public_send(method_name, call)
|
|
18
16
|
rescue => error
|
|
19
|
-
Console.error(self, "Error while dispatching call
|
|
17
|
+
Console.error(self, "Error while dispatching call!", exception: error, call: call)
|
|
20
18
|
|
|
21
19
|
call.fail(error: {
|
|
22
20
|
class: error.class,
|
|
@@ -34,12 +34,12 @@ module Async
|
|
|
34
34
|
|
|
35
35
|
# Register the connection (worker) with the memory monitor.
|
|
36
36
|
def register(connection)
|
|
37
|
-
Console.debug(self, "Registering connection
|
|
37
|
+
Console.debug(self, "Registering connection.", connection: connection, state: connection.state)
|
|
38
38
|
if process_id = connection.state[:process_id]
|
|
39
39
|
connections = @processes[process_id]
|
|
40
40
|
|
|
41
41
|
if connections.empty?
|
|
42
|
-
Console.debug(self, "Registering process
|
|
42
|
+
Console.debug(self, "Registering process.", child: {process_id: process_id})
|
|
43
43
|
self.add(process_id)
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -55,7 +55,7 @@ module Async
|
|
|
55
55
|
connections.delete(connection)
|
|
56
56
|
|
|
57
57
|
if connections.empty?
|
|
58
|
-
Console.debug(self, "Removing process
|
|
58
|
+
Console.debug(self, "Removing process.", child: {process_id: process_id})
|
|
59
59
|
@cluster.remove(process_id)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -74,7 +74,7 @@ module Async
|
|
|
74
74
|
# @parameter monitor [Memory::Leak::Monitor] The monitor that detected the memory leak.
|
|
75
75
|
# @returns [Boolean] True if the process was killed.
|
|
76
76
|
def memory_leak_detected(process_id, monitor)
|
|
77
|
-
Console.info(self, "Killing process
|
|
77
|
+
Console.info(self, "Killing process!", child: {process_id: process_id})
|
|
78
78
|
Process.kill(:INT, process_id)
|
|
79
79
|
|
|
80
80
|
true
|
|
@@ -88,7 +88,7 @@ module Async
|
|
|
88
88
|
while true
|
|
89
89
|
# This block must return true if the process was killed.
|
|
90
90
|
@cluster.check! do |process_id, monitor|
|
|
91
|
-
Console.error(self, "Memory leak detected
|
|
91
|
+
Console.error(self, "Memory leak detected!", child: {process_id: process_id}, monitor: monitor)
|
|
92
92
|
memory_leak_detected(process_id, monitor)
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -7,8 +7,6 @@ require_relative "connection"
|
|
|
7
7
|
require_relative "endpoint"
|
|
8
8
|
require_relative "dispatchable"
|
|
9
9
|
|
|
10
|
-
require "io/stream"
|
|
11
|
-
|
|
12
10
|
module Async
|
|
13
11
|
module Container
|
|
14
12
|
module Supervisor
|
|
@@ -29,11 +27,9 @@ module Async
|
|
|
29
27
|
call.connection.state.merge!(call.message[:state])
|
|
30
28
|
|
|
31
29
|
@monitors.each do |monitor|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Console.error(self, "Error while registering process!", monitor: monitor, exception: error)
|
|
36
|
-
end
|
|
30
|
+
monitor.register(call.connection)
|
|
31
|
+
rescue => error
|
|
32
|
+
Console.error(self, "Error while registering process!", monitor: monitor, exception: error)
|
|
37
33
|
end
|
|
38
34
|
ensure
|
|
39
35
|
call.finish
|
|
@@ -61,22 +57,18 @@ module Async
|
|
|
61
57
|
|
|
62
58
|
def remove(connection)
|
|
63
59
|
@monitors.each do |monitor|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Console.error(self, "Error while removing process!", monitor: monitor, exception: error)
|
|
68
|
-
end
|
|
60
|
+
monitor.remove(connection)
|
|
61
|
+
rescue => error
|
|
62
|
+
Console.error(self, "Error while removing process!", monitor: monitor, exception: error)
|
|
69
63
|
end
|
|
70
64
|
end
|
|
71
65
|
|
|
72
66
|
def run(parent: Task.current)
|
|
73
67
|
parent.async do |task|
|
|
74
68
|
@monitors.each do |monitor|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
Console.error(self, "Error while starting monitor!", monitor: monitor, exception: error)
|
|
79
|
-
end
|
|
69
|
+
monitor.run
|
|
70
|
+
rescue => error
|
|
71
|
+
Console.error(self, "Error while starting monitor!", monitor: monitor, exception: error)
|
|
80
72
|
end
|
|
81
73
|
|
|
82
74
|
@endpoint.accept do |peer|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: async-container-supervisor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -38,20 +38,6 @@ cert_chain:
|
|
|
38
38
|
-----END CERTIFICATE-----
|
|
39
39
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
40
40
|
dependencies:
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: async-container
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0.22'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0.22'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: async-service
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,20 +66,6 @@ dependencies:
|
|
|
80
66
|
- - ">="
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
68
|
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: io-stream
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :runtime
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
69
|
- !ruby/object:Gem::Dependency
|
|
98
70
|
name: memory-leak
|
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -148,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
120
|
- !ruby/object:Gem::Version
|
|
149
121
|
version: '0'
|
|
150
122
|
requirements: []
|
|
151
|
-
rubygems_version: 3.
|
|
123
|
+
rubygems_version: 3.7.2
|
|
152
124
|
specification_version: 4
|
|
153
125
|
summary: A supervisor for managing multiple container processes.
|
|
154
126
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|