instana 2.5.0 → 2.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 465f9dad91e0e60f443e196091b1b725ed012094a5da4f8d0d9a8c525ba4b0de
4
- data.tar.gz: e5c17ed36acd2197cbbc6e83a2c44b64562c7bd1785854fc4e2120fb01a99d3f
3
+ metadata.gz: 40aac99d17c0ed83570261a6a6a6c7a6900c7d44e24b2370476ce722c0642890
4
+ data.tar.gz: 76ed9ab5fafa402e0783f67928807dc435d94c84d6f32418d71eeb3fb590bf76
5
5
  SHA512:
6
- metadata.gz: ef5f5fe6ff3272ac729be2d1b36f9653a06ab8bc8393e15e897712558c0c09258a8730f08e1ef8f8d7503e8e6168c177afc5c98609616ec5ba9bbdf9aa3a42b5
7
- data.tar.gz: aba66786130415c9154453bb7daf853ffa976c7b048cdf15985706b778ee92dad8d963ff02040228c79f22c08f67a0ca9099af90439a99217420b99549632040
6
+ metadata.gz: eedd8d0ffdd1b66b2ce7733659fd31c6e1bab2c28b5c7afca00efc53a73b869d65a7cab27e107f61643fb128d871c750d0190cf568a9b6eec579fe6f8c7edf4a
7
+ data.tar.gz: 975ca25c4523771df6a70bd6a4e8bf3bb6164edcd90661e681d5bfc0c1747c9852ec2eef07a24502ccecad132462f697171a17dd2947133f5d8fbbc42e070562
@@ -25,9 +25,9 @@ module Instana
25
25
  def update(_time, _old_version, new_version)
26
26
  return unless new_version.nil?
27
27
 
28
- socket = @socket_proc.call(@client)
29
-
28
+ socket = nil
30
29
  try_forever_with_backoff do
30
+ socket = @socket_proc.call(@client)
31
31
  payload = discovery_payload(socket)
32
32
  discovery_response = @client.send_request('PUT', DISCOVERY_URL, payload)
33
33
 
@@ -45,7 +45,7 @@ module Instana
45
45
  ::Instana.config.read_config_from_agent(discovery)
46
46
  end
47
47
 
48
- socket.close
48
+ socket&.close
49
49
  end
50
50
 
51
51
  private
@@ -64,8 +64,8 @@ module Instana
64
64
  response = @client.send_request('POST', path, spans)
65
65
 
66
66
  unless response.ok?
67
- @logger.debug("Sent `#{spans.count}` spans to `#{path}` and got `#{response.code}`.")
68
- @discovery.swap { nil }
67
+ @logger.warn("Failed to send `#{spans.count}` spans to `#{path}`. Response: #{response.code} - #{response.body}")
68
+ trigger_rediscovery
69
69
  break
70
70
  end
71
71
  end
@@ -82,8 +82,8 @@ module Instana
82
82
  if response.ok?
83
83
  handle_agent_tasks(response, discovery) unless response.body.empty?
84
84
  else
85
- @logger.debug("Sent `#{payload}` to `#{path}` and got `#{response.code}`.")
86
- @discovery.swap { nil }
85
+ @logger.warn("Failed to send metrics to `#{path}`. Response: #{response.code} - #{response.body}")
86
+ trigger_rediscovery
87
87
  end
88
88
  end
89
89
 
@@ -125,6 +125,11 @@ module Instana
125
125
 
126
126
  payload
127
127
  end
128
+
129
+ def trigger_rediscovery
130
+ @discovery.swap { nil }
131
+ ::Instana.agent.announce
132
+ end
128
133
  end
129
134
  end
130
135
  end
@@ -59,9 +59,25 @@ module Instana
59
59
 
60
60
  data
61
61
  end
62
-
63
- response = @client.send_request(method, path, body, headers)
64
- Response.new(response)
62
+ begin
63
+ response = @client.send_request(method, path, body, headers)
64
+ Response.new(response)
65
+ rescue Errno::ECONNREFUSED => e
66
+ Instana.logger.debug("Connection refused to #{@host}:#{@port} - #{e.message}")
67
+ create_error_response('503', 'Connection Refused', 'Connection refused', e.message)
68
+ rescue Errno::EHOSTUNREACH => e
69
+ Instana.logger.debug("Host unreachable #{@host}:#{@port} - #{e.message}")
70
+ create_error_response('503', 'Host Unreachable', 'Host unreachable', e.message)
71
+ rescue Errno::ETIMEDOUT, Net::OpenTimeout, Net::ReadTimeout => e
72
+ Instana.logger.debug("Timeout connecting to #{@host}:#{@port} - #{e.message}")
73
+ create_error_response('408', 'Request Timeout', 'Timeout', e.message)
74
+ rescue SocketError => e
75
+ Instana.logger.debug("Socket error connecting to #{@host}:#{@port} - #{e.message}")
76
+ create_error_response('502', 'Socket Error', 'Socket error', e.message)
77
+ rescue StandardError => e
78
+ Instana.logger.debug("Error sending request to #{@host}:#{@port} - #{e.class}: #{e.message}")
79
+ create_error_response('500', 'Internal Error', e.class.to_s, e.message)
80
+ end
65
81
  end
66
82
 
67
83
  private
@@ -71,6 +87,19 @@ module Instana
71
87
  INSTANA_USE_OJ ? Oj.dump(data, mode: :strict) : JSON.dump(data)
72
88
  # :nocov:
73
89
  end
90
+
91
+ def create_error_response(code, message, error_type, error_message)
92
+ # Create a mock response object that behaves like Net::HTTPResponse
93
+ error_response = Object.new
94
+ error_body = JSON.dump(error: error_type, message: error_message)
95
+
96
+ error_response.define_singleton_method(:code) { code }
97
+ error_response.define_singleton_method(:message) { message }
98
+ error_response.define_singleton_method(:body) { error_body }
99
+ error_response.define_singleton_method(:is_a?) { |klass| klass == Net::HTTPResponse || super(klass) }
100
+
101
+ Response.new(error_response)
102
+ end
74
103
  end
75
104
  end
76
105
  end
@@ -87,13 +87,13 @@ module Instana
87
87
 
88
88
  @attributes[:stack] = stack
89
89
  .map do |call|
90
- file, line, *method = call.split(':')
90
+ file, line, *method = call.split(':')
91
91
 
92
- {
93
- c: file,
94
- n: line,
95
- m: method.join(' ')
96
- }
92
+ {
93
+ c: file,
94
+ n: line,
95
+ m: method.join(' ')
96
+ }
97
97
  end.take([limit, 40].min)
98
98
  end
99
99
 
@@ -2,6 +2,6 @@
2
2
  # (c) Copyright Instana Inc. 2016
3
3
 
4
4
  module Instana
5
- VERSION = "2.5.0"
5
+ VERSION = "2.5.1"
6
6
  VERSION_FULL = "instana-#{VERSION}"
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instana
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Giacomo Lombardo
@@ -362,7 +362,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
362
362
  - !ruby/object:Gem::Version
363
363
  version: '0'
364
364
  requirements: []
365
- rubygems_version: 4.0.7
365
+ rubygems_version: 4.0.8
366
366
  specification_version: 4
367
367
  summary: Ruby Distributed Tracing & Metrics Sensor for Instana
368
368
  test_files: []