rookout 0.1.11 → 0.1.16
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/lib/rookout/com_ws/agent_com_ws.rb +5 -4
- data/lib/rookout/com_ws/backoff.rb +5 -10
- data/lib/rookout/com_ws/information.rb +1 -1
- data/lib/rookout/com_ws/websocket_client.rb +43 -16
- data/lib/rookout/commit.rb +1 -1
- data/lib/rookout/exceptions.rb +13 -1
- data/lib/rookout/interface.rb +37 -16
- data/lib/rookout/processor/namespaces/noop_namespace.rb +3 -3
- data/lib/rookout/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: e08815efb5a89029e091fe5cd252dce182407411e6025de9db8e5ae2659d77d7
|
4
|
+
data.tar.gz: 60bba85497d1f9253e3447283fa1adb97096cb21213b5911ba90371323f1de26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d4744c8a0eda6615c1c9b503503d67a1ee647ac7dbf4607fe75b1d9aeff90f8ad98dd497df23eab4488f692f26266d5fd048db566a88a8713272ad072843200
|
7
|
+
data.tar.gz: 7aec7fcff6e9637319f5867b19f2a5eb15d1a0c560a7e1ed212f21b730ed67253db853eff0d3aeacb89a66a6b558f06fbb9049c68d2a8d052cc6787630859247
|
@@ -51,11 +51,11 @@ module Rookout
|
|
51
51
|
def add message
|
52
52
|
buffer = wrap_in_envelope message
|
53
53
|
if buffer.length > Config.agent_com_max_message_limit
|
54
|
-
exc = Exceptions::RookMessageSizeExceeded.new buffer.length,
|
55
|
-
warning = RookError.new exc
|
54
|
+
exc = Exceptions::RookMessageSizeExceeded.new buffer.length, Config.agent_com_max_message_limit
|
55
|
+
warning = Processor::RookError.new exc
|
56
56
|
UserWarnings.notify_warning warning
|
57
57
|
|
58
|
-
Logger.instance.
|
58
|
+
Logger.instance.warning "Dropping message, size was #{buffer.length} which is over the message size limit"
|
59
59
|
return
|
60
60
|
end
|
61
61
|
|
@@ -100,10 +100,11 @@ module Rookout
|
|
100
100
|
|
101
101
|
while @running
|
102
102
|
begin
|
103
|
-
backoff.before_connection_attempt
|
104
103
|
client = open_new_connection
|
105
104
|
|
106
105
|
Logger.instance.debug "WebSocket connected successfully"
|
106
|
+
Logger.instance.info "Finished initialization"
|
107
|
+
|
107
108
|
@token_valid = true
|
108
109
|
backoff.after_connect
|
109
110
|
|
@@ -4,25 +4,20 @@ module Rookout
|
|
4
4
|
|
5
5
|
class Backoff
|
6
6
|
def initialize
|
7
|
-
@
|
8
|
-
@last_successful_connection = Time.mktime 1970
|
9
|
-
reset_backoff
|
10
|
-
end
|
11
|
-
|
12
|
-
def before_connection_attempt
|
13
|
-
return unless Time.new > @last_successful_connection + Config.backoff_reset_time
|
7
|
+
@connect_time = nil
|
14
8
|
reset_backoff
|
15
9
|
end
|
16
10
|
|
17
11
|
def after_disconnect
|
18
|
-
@
|
12
|
+
reset_backoff if @connect_time && Time.new > @connect_time + Config.backoff_reset_time
|
13
|
+
@connect_time = nil
|
14
|
+
|
19
15
|
sleep @next_backoff
|
20
16
|
@next_backoff = [@next_backoff * 2, Config.backoff_max_time].min
|
21
17
|
end
|
22
18
|
|
23
19
|
def after_connect
|
24
|
-
@
|
25
|
-
@last_successful_connection = Time.now
|
20
|
+
@connect_time = Time.now
|
26
21
|
end
|
27
22
|
|
28
23
|
private
|
@@ -66,7 +66,7 @@ module Rookout
|
|
66
66
|
# rubocop:enable Style/ParallelAssignment
|
67
67
|
|
68
68
|
def create_scm_information
|
69
|
-
user_git_origin = Config.user_git_origin || ENV["
|
69
|
+
user_git_origin = Config.user_git_origin || ENV["ROOKOUT_REMOTE_ORIGIN"]
|
70
70
|
user_git_commit = Config.user_git_commit || ENV["ROOKOUT_COMMIT"]
|
71
71
|
|
72
72
|
if user_git_origin.nil? && user_git_commit.nil?
|
@@ -2,6 +2,7 @@ module Rookout
|
|
2
2
|
module ComWs
|
3
3
|
require "openssl"
|
4
4
|
require "websocket/driver"
|
5
|
+
require "uri"
|
5
6
|
|
6
7
|
require_relative "../config"
|
7
8
|
require_relative "../logger"
|
@@ -11,14 +12,13 @@ module Rookout
|
|
11
12
|
def initialize url, proxy, token
|
12
13
|
@token = token
|
13
14
|
@connection = WebsocketConnection.new url, proxy
|
15
|
+
@proxy = proxy
|
14
16
|
@driver = nil
|
15
|
-
@error = nil
|
16
17
|
@last_ping = nil
|
17
18
|
end
|
18
19
|
|
19
20
|
def connect
|
20
|
-
|
21
|
-
@connection.connect
|
21
|
+
connection_error = nil
|
22
22
|
@driver = WebSocket::Driver.client @connection
|
23
23
|
|
24
24
|
headers.each do |key, value|
|
@@ -26,18 +26,20 @@ module Rookout
|
|
26
26
|
end
|
27
27
|
|
28
28
|
@driver.on :error do |error|
|
29
|
-
|
29
|
+
connection_error = error
|
30
30
|
end
|
31
31
|
|
32
32
|
# Connect to the remote server
|
33
|
-
@driver.start
|
34
33
|
# TODO: ADD CONNECT TIMEOUT
|
34
|
+
@connection.connect @driver
|
35
|
+
@driver.start
|
36
|
+
|
35
37
|
while @driver.state == :connecting
|
36
38
|
recv_data = @connection.read_char
|
37
39
|
@driver.parse recv_data
|
38
40
|
end
|
39
41
|
|
40
|
-
raise Exceptions::RookWebsocketException,
|
42
|
+
raise Exceptions::RookWebsocketException, connection_error if @driver.state != :open
|
41
43
|
end
|
42
44
|
|
43
45
|
def connection_pump message_handler
|
@@ -88,14 +90,36 @@ module Rookout
|
|
88
90
|
@secure = %w[https wss].include? @uri.scheme
|
89
91
|
|
90
92
|
@socket = nil
|
93
|
+
|
94
|
+
@proxy_connected = false
|
91
95
|
end
|
92
96
|
|
93
|
-
def connect
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
97
|
+
def connect driver
|
98
|
+
@socket = tcp_connect
|
99
|
+
|
100
|
+
proxy_connect driver if @proxy
|
101
|
+
|
102
|
+
@socket = ssl_connect @socket if @secure
|
103
|
+
end
|
104
|
+
|
105
|
+
def proxy_connect driver
|
106
|
+
connection_error = nil
|
107
|
+
@proxy_connected = false
|
108
|
+
proxy = driver.proxy @proxy
|
109
|
+
|
110
|
+
proxy.on :connect do
|
111
|
+
@proxy_connected = true
|
98
112
|
end
|
113
|
+
|
114
|
+
proxy.on :error do |error|
|
115
|
+
connection_error = error
|
116
|
+
end
|
117
|
+
|
118
|
+
proxy.start
|
119
|
+
|
120
|
+
proxy.parse read_char until @proxy_connected == true || !connection_error.nil?
|
121
|
+
|
122
|
+
raise Exceptions::RookProxyException, connection_error unless connection_error.nil?
|
99
123
|
end
|
100
124
|
|
101
125
|
attr_reader :url
|
@@ -118,13 +142,16 @@ module Rookout
|
|
118
142
|
private
|
119
143
|
|
120
144
|
def tcp_connect
|
121
|
-
|
122
|
-
|
145
|
+
if @proxy
|
146
|
+
uri = URI(@proxy)
|
147
|
+
TCPSocket.new uri.host, uri.port
|
148
|
+
else
|
149
|
+
TCPSocket.new @uri.host,
|
150
|
+
@uri.port || (@secure ? 443 : 80)
|
151
|
+
end
|
123
152
|
end
|
124
153
|
|
125
|
-
def ssl_connect
|
126
|
-
tcp_socket = tcp_connect
|
127
|
-
|
154
|
+
def ssl_connect tcp_socket
|
128
155
|
ctx = ::OpenSSL::SSL::SSLContext.new
|
129
156
|
ctx.min_version = ::OpenSSL::SSL::TLS1_2_VERSION
|
130
157
|
cert_store = ::OpenSSL::X509::Store.new
|
data/lib/rookout/commit.rb
CHANGED
data/lib/rookout/exceptions.rb
CHANGED
@@ -94,7 +94,7 @@ module Rookout
|
|
94
94
|
super "Message size of #{message_size} exceeds max size limit of #{max_message_size}. " \
|
95
95
|
"Change the depth of collection or change the default by setting ROOKOUT_MAX_MESSAGE_SIZE " \
|
96
96
|
"as environment variable or system property",
|
97
|
-
{ message_size
|
97
|
+
{ "message_size" => message_size, "max_message_size" => max_message_size }
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -177,5 +177,17 @@ module Rookout
|
|
177
177
|
super "Error from Websocket #{error}", { "error" => error }
|
178
178
|
end
|
179
179
|
end
|
180
|
+
|
181
|
+
class RookProxyException < ToolException
|
182
|
+
def initialize error
|
183
|
+
super "Error from proxy #{error}", { "error" => error }
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
class RookBadProtobuf < ToolException
|
188
|
+
def initialize
|
189
|
+
super 'Bad protobuf version. Please execute "bundle config force_ruby_platform true" before "bundler install".'
|
190
|
+
end
|
191
|
+
end
|
180
192
|
end
|
181
193
|
end
|
data/lib/rookout/interface.rb
CHANGED
@@ -17,24 +17,22 @@ module Rookout
|
|
17
17
|
throw_errors = options[:throw_errors] == true
|
18
18
|
Config.debug = evaluate_flag options[:debug], "ROOKOUT_DEBUG"
|
19
19
|
|
20
|
+
puts "[Rookout] Running in debug mode" if Config.debug
|
21
|
+
|
20
22
|
begin
|
21
|
-
|
23
|
+
verify_env
|
22
24
|
|
23
|
-
|
24
|
-
if options[:post_fork]
|
25
|
-
# Don't re-enable the fork handler
|
26
|
-
@start_options[:fork] = false
|
27
|
-
else
|
28
|
-
configure_logging options
|
29
|
-
configure_git options
|
25
|
+
require_relative "rookout_singleton"
|
30
26
|
|
31
|
-
|
32
|
-
print_config @start_options
|
33
|
-
end
|
27
|
+
configure options
|
34
28
|
|
35
29
|
rook = RookoutSingleton.instance
|
36
30
|
rook.connect(**@start_options)
|
37
|
-
rescue
|
31
|
+
rescue LoadError
|
32
|
+
raise if throw_errors
|
33
|
+
STDERR.puts "[Rookout] Failed to load Rookout. Please make sure to force build native extensions by setting" \
|
34
|
+
"'bundle config force_ruby_platform true'"
|
35
|
+
rescue RookMissingToken, RookInvalidToken, RookInvalidOptions, RookVersionNotSupported, RookBadProtobuf => e
|
38
36
|
raise if throw_errors
|
39
37
|
STDERR.puts "[Rookout] Failed to start Rookout: #{e.message}"
|
40
38
|
rescue RookCommunicationException => e
|
@@ -61,7 +59,28 @@ module Rookout
|
|
61
59
|
|
62
60
|
TRUE_VALUE = [true, "y", "Y", "yes", "Yes", "YES", "true", "True", "TRUE", "1"].freeze
|
63
61
|
|
64
|
-
def
|
62
|
+
def configure options
|
63
|
+
# If we are running post fork, use previous start_options
|
64
|
+
if options[:post_fork]
|
65
|
+
# Don't re-enable the fork handler
|
66
|
+
@start_options[:fork] = false
|
67
|
+
else
|
68
|
+
configure_globals options
|
69
|
+
|
70
|
+
@start_options = configure_start_options options
|
71
|
+
print_config @start_options
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def verify_env
|
76
|
+
# Only test alpine
|
77
|
+
return unless File.exist? "/etc/alpine-release"
|
78
|
+
|
79
|
+
protobuf = Gem::Specification.find_by_path "google/protobuf"
|
80
|
+
raise RookBadProtobuf if protobuf.nil? || protobuf.platform != "ruby"
|
81
|
+
end
|
82
|
+
|
83
|
+
def configure_globals options
|
65
84
|
if Config.debug
|
66
85
|
log_to_stderr = true
|
67
86
|
log_level = :DEBUG
|
@@ -75,9 +94,7 @@ module Rookout
|
|
75
94
|
Config.logger_log_to_stderr = log_to_stderr unless log_to_stderr.nil?
|
76
95
|
Config.logger_filename = log_file unless log_file.nil?
|
77
96
|
Config.logger_log_level = log_level unless log_level.nil?
|
78
|
-
end
|
79
97
|
|
80
|
-
def configure_git options
|
81
98
|
Config.user_git_origin = options[:git_origin] if options[:git_origin]
|
82
99
|
Config.user_git_commit = options[:git_commit] if options[:git_commit]
|
83
100
|
end
|
@@ -88,7 +105,7 @@ module Rookout
|
|
88
105
|
proxy = evaluate_config options[:proxy], "ROOKOUT_PROXY"
|
89
106
|
token = evaluate_config options[:token], "ROOKOUT_TOKEN"
|
90
107
|
|
91
|
-
raise RookMissingToken if token.nil? &&
|
108
|
+
raise RookMissingToken if token.nil? && !(host_specified options)
|
92
109
|
verify_token token if token
|
93
110
|
|
94
111
|
labels = stringify_labels(options[:labels]) || parse_labels(ENV["ROOKOUT_LABELS"])
|
@@ -100,6 +117,10 @@ module Rookout
|
|
100
117
|
{ host: host, port: port, proxy: proxy, token: token, labels: labels, async_start: async_start, fork: fork }
|
101
118
|
end
|
102
119
|
|
120
|
+
def host_specified options
|
121
|
+
!options[:host].nil? || !ENV["ROOKOUT_CONTROLLER_HOST"].nil? || !ENV["ROOKOUT_AGENT_HOST"].nil?
|
122
|
+
end
|
123
|
+
|
103
124
|
def evaluate_flag argument, env_var_name
|
104
125
|
return true? argument unless argument.nil?
|
105
126
|
true? ENV[env_var_name]
|
@@ -12,15 +12,15 @@ module Rookout
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def call_method _name, _args
|
15
|
-
RubyObjectNamespace nil
|
15
|
+
Rookout::Processor::Namespaces::RubyObjectNamespace.new nil
|
16
16
|
end
|
17
17
|
|
18
18
|
def read_attribute _name
|
19
|
-
RubyObjectNamespace nil
|
19
|
+
Rookout::Processor::Namespaces::RubyObjectNamespace.new nil
|
20
20
|
end
|
21
21
|
|
22
22
|
def read_key _key
|
23
|
-
RubyObjectNamespace nil
|
23
|
+
Rookout::Processor::Namespaces::RubyObjectNamespace.new nil
|
24
24
|
end
|
25
25
|
|
26
26
|
def dump _log_object_errors
|
data/lib/rookout/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rookout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liran Haimovitch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|