opentelemetry-exporter-otlp 0.8.0 → 0.9.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 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: