opentelemetry-exporter-otlp 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce3f4d8c613bf9c9d54c562aed35d26602363974fc101c161d33dd3f4241da95
4
- data.tar.gz: 9ebdf5eab072b7854da5f722d3ae9dde312a025c67ac16ffd809f408e3a2cf90
3
+ metadata.gz: 7422364466e3ef80afdaf0e64bce127f2b6c282b926521d44c5a92a41ab7af8e
4
+ data.tar.gz: 4ade3413f85673da608dc9e0ecc5a083edc2991751121d91f19d3b0025d37020
5
5
  SHA512:
6
- metadata.gz: c584f93fbf7059a26991b44a51767f49c08f192f45b6328d68fc44531939d4a2cd3286885a62cd325ea5274e1c50341bb6c26a8ea89da87fb8cb4b0c9ef851ca
7
- data.tar.gz: 2777bbadf94ca8e325ca3466b291f6d9c0e4ece9807963a4adc4d8328d059c783ae5d54a9f4fb81ce99a122c2f8931ad8ffea8dbd996f3b58aba64f966b3efb0
6
+ metadata.gz: bed0bf05f7c85a78ea08d0c7a7920396fdf8619b50bde257908eb0bbb9139bb6883ac858153032e10c19408319a200ff2127a0589ed22f4055f97cb1ff7f425e
7
+ data.tar.gz: 0ecfe8df94c4838736fd6a84a5a9672f470973b6c3c5941403dd1ce3975ed6ec3eac6b3f78609aed9995a3f6a301c133be7880f7e2b6223ac364fd51f3d1e73a
@@ -1,5 +1,12 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.9.0 / 2020-11-27
4
+
5
+ * BREAKING CHANGE: Add timeout for force_flush and shutdown
6
+
7
+ * ADDED: Add timeout for force_flush and shutdown
8
+ * FIXED: Remove unused kwarg from otlp exporter retry
9
+
3
10
  ### v0.8.0 / 2020-10-27
4
11
 
5
12
  * BREAKING CHANGE: Move context/span methods to Trace module
@@ -4,6 +4,7 @@
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
+ require 'opentelemetry/common'
7
8
  require 'opentelemetry/sdk'
8
9
  require 'net/http'
9
10
  require 'csv'
@@ -21,14 +22,14 @@ module OpenTelemetry
21
22
  class Exporter # rubocop:disable Metrics/ClassLength
22
23
  SUCCESS = OpenTelemetry::SDK::Trace::Export::SUCCESS
23
24
  FAILURE = OpenTelemetry::SDK::Trace::Export::FAILURE
24
- private_constant(:SUCCESS, :FAILURE)
25
+ TIMEOUT = OpenTelemetry::SDK::Trace::Export::TIMEOUT
26
+ private_constant(:SUCCESS, :FAILURE, :TIMEOUT)
25
27
 
26
28
  # Default timeouts in seconds.
27
29
  KEEP_ALIVE_TIMEOUT = 30
28
- OPEN_TIMEOUT = 5
29
- READ_TIMEOUT = 5
30
30
  RETRY_COUNT = 5
31
- private_constant(:KEEP_ALIVE_TIMEOUT, :OPEN_TIMEOUT, :READ_TIMEOUT, :RETRY_COUNT)
31
+ WRITE_TIMEOUT_SUPPORTED = Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6')
32
+ private_constant(:KEEP_ALIVE_TIMEOUT, :RETRY_COUNT, :WRITE_TIMEOUT_SUPPORTED)
32
33
 
33
34
  def initialize(endpoint: config_opt('OTEL_EXPORTER_OTLP_SPAN_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'localhost:55681/v1/trace'), # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
34
35
  insecure: config_opt('OTEL_EXPORTER_OTLP_SPAN_INSECURE', 'OTEL_EXPORTER_OTLP_INSECURE', default: false),
@@ -45,8 +46,6 @@ module OpenTelemetry
45
46
  @http.use_ssl = insecure.to_s.downcase == 'false'
46
47
  @http.ca_file = certificate_file unless certificate_file.nil?
47
48
  @http.keep_alive_timeout = KEEP_ALIVE_TIMEOUT
48
- @http.open_timeout = OPEN_TIMEOUT
49
- @http.read_timeout = READ_TIMEOUT
50
49
 
51
50
  @path = uri.path
52
51
  @headers = case headers
@@ -64,17 +63,20 @@ module OpenTelemetry
64
63
  # @param [Enumerable<OpenTelemetry::SDK::Trace::SpanData>] span_data the
65
64
  # list of recorded {OpenTelemetry::SDK::Trace::SpanData} structs to be
66
65
  # exported.
66
+ # @param [optional Numeric] timeout An optional timeout in seconds.
67
67
  # @return [Integer] the result of the export.
68
- def export(span_data)
68
+ def export(span_data, timeout: nil)
69
69
  return FAILURE if @shutdown
70
70
 
71
- send_bytes(encode(span_data))
71
+ send_bytes(encode(span_data), timeout: timeout)
72
72
  end
73
73
 
74
74
  # Called when {OpenTelemetry::SDK::Trace::Tracer#shutdown} is called, if
75
75
  # this exporter is registered to a {OpenTelemetry::SDK::Trace::Tracer}
76
76
  # object.
77
- def shutdown
77
+ #
78
+ # @param [optional Numeric] timeout An optional timeout in seconds.
79
+ def shutdown(timeout: nil)
78
80
  @shutdown = true
79
81
  @http.finish if @http.started?
80
82
  end
@@ -108,8 +110,10 @@ module OpenTelemetry
108
110
  true
109
111
  end
110
112
 
111
- def send_bytes(bytes) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
113
+ def send_bytes(bytes, timeout:) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
112
114
  retry_count = 0
115
+ timeout ||= @timeout
116
+ start_time = Time.now
113
117
  untraced do # rubocop:disable Metrics/BlockLength
114
118
  request = Net::HTTP::Post.new(@path)
115
119
  request.body = if @compression == 'gzip'
@@ -121,6 +125,12 @@ module OpenTelemetry
121
125
  request.add_field('Content-Type', 'application/x-protobuf')
122
126
  @headers&.each { |key, value| request.add_field(key, value) }
123
127
 
128
+ remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
129
+ return TIMEOUT if remaining_timeout.zero?
130
+
131
+ @http.open_timeout = remaining_timeout
132
+ @http.read_timeout = remaining_timeout
133
+ @http.write_timeout = remaining_timeout if WRITE_TIMEOUT_SUPPORTED
124
134
  @http.start unless @http.started?
125
135
  response = @http.request(request)
126
136
 
@@ -152,6 +162,11 @@ module OpenTelemetry
152
162
  retry if backoff?(retry_count: retry_count += 1)
153
163
  return FAILURE
154
164
  end
165
+ ensure
166
+ # Reset timeouts to defaults for the next call.
167
+ @http.open_timeout = @timeout
168
+ @http.read_timeout = @timeout
169
+ @http.write_timeout = @timeout if WRITE_TIMEOUT_SUPPORTED
155
170
  end
156
171
 
157
172
  def handle_redirect(location)
@@ -162,7 +177,7 @@ module OpenTelemetry
162
177
  OpenTelemetry::Trace.with_span(OpenTelemetry::Trace::Span.new) { yield }
163
178
  end
164
179
 
165
- def backoff?(retry_after: nil, retry_count:, reason:)
180
+ def backoff?(retry_after: nil, retry_count:)
166
181
  return false if retry_count > RETRY_COUNT
167
182
 
168
183
  sleep_interval = nil
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.8.0'
11
+ VERSION = '0.9.0'
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-exporter-otlp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -36,14 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.8.0
39
+ version: 0.9.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.8.0
46
+ version: 0.9.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: opentelemetry-common
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.9.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.9.0
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: bundler
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -193,10 +207,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
193
207
  licenses:
194
208
  - Apache-2.0
195
209
  metadata:
196
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.8.0/file.CHANGELOG.html
210
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.9.0/file.CHANGELOG.html
197
211
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/exporter/otlp
198
212
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
199
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.8.0
213
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.9.0
200
214
  post_install_message:
201
215
  rdoc_options: []
202
216
  require_paths: