elasticsearch-transport 6.8.3 → 7.0.0.pre
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/Gemfile +17 -0
- data/LICENSE.txt +199 -10
- data/README.md +32 -86
- data/Rakefile +23 -4
- data/elasticsearch-transport.gemspec +78 -45
- data/lib/elasticsearch-transport.rb +16 -3
- data/lib/elasticsearch/transport.rb +17 -3
- data/lib/elasticsearch/transport/client.rb +70 -174
- data/lib/elasticsearch/transport/redacted.rb +5 -9
- data/lib/elasticsearch/transport/transport/base.rb +63 -55
- data/lib/elasticsearch/transport/transport/connections/collection.rb +16 -3
- data/lib/elasticsearch/transport/transport/connections/connection.rb +16 -3
- data/lib/elasticsearch/transport/transport/connections/selector.rb +16 -3
- data/lib/elasticsearch/transport/transport/errors.rb +16 -3
- data/lib/elasticsearch/transport/transport/http/curb.rb +18 -5
- data/lib/elasticsearch/transport/transport/http/faraday.rb +18 -5
- data/lib/elasticsearch/transport/transport/http/manticore.rb +17 -4
- data/lib/elasticsearch/transport/transport/loggable.rb +85 -0
- data/lib/elasticsearch/transport/transport/response.rb +16 -3
- data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +16 -3
- data/lib/elasticsearch/transport/transport/sniffer.rb +17 -5
- data/lib/elasticsearch/transport/version.rb +17 -4
- data/spec/elasticsearch/transport/base_spec.rb +8 -187
- data/spec/elasticsearch/transport/client_spec.rb +29 -163
- data/spec/elasticsearch/transport/sniffer_spec.rb +19 -0
- data/spec/spec_helper.rb +2 -11
- data/test/integration/transport_test.rb +18 -5
- data/test/profile/client_benchmark_test.rb +16 -3
- data/test/test_helper.rb +63 -14
- data/test/unit/connection_collection_test.rb +17 -4
- data/test/unit/connection_selector_test.rb +17 -4
- data/test/unit/connection_test.rb +17 -4
- data/test/unit/response_test.rb +18 -5
- data/test/unit/serializer_test.rb +17 -4
- data/test/unit/transport_base_test.rb +21 -8
- data/test/unit/transport_curb_test.rb +17 -4
- data/test/unit/transport_faraday_test.rb +17 -4
- data/test/unit/transport_manticore_test.rb +24 -6
- metadata +61 -86
- data/spec/elasticsearch/transport/meta_header_spec.rb +0 -214
@@ -1,7 +1,3 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more agreements.
|
2
|
-
# Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
|
3
|
-
# See the LICENSE file in the project root for more information
|
4
|
-
|
5
1
|
# Licensed to Elasticsearch B.V. under one or more contributor
|
6
2
|
# license agreements. See the NOTICE file distributed with
|
7
3
|
# this work for additional information regarding copyright
|
@@ -25,7 +21,7 @@ module Elasticsearch
|
|
25
21
|
# Class for wrapping a hash that could have sensitive data.
|
26
22
|
# When printed, the sensitive values will be redacted.
|
27
23
|
#
|
28
|
-
# @since 6.
|
24
|
+
# @since 6.1.1
|
29
25
|
class Redacted < ::Hash
|
30
26
|
|
31
27
|
def initialize(elements = nil)
|
@@ -35,20 +31,20 @@ module Elasticsearch
|
|
35
31
|
|
36
32
|
# The keys whose values will be redacted.
|
37
33
|
#
|
38
|
-
# @since 6.
|
34
|
+
# @since 6.1.1
|
39
35
|
SENSITIVE_KEYS = [ :password,
|
40
36
|
:pwd ].freeze
|
41
37
|
|
42
38
|
# The replacement string used in place of the value for sensitive keys.
|
43
39
|
#
|
44
|
-
# @since 6.
|
40
|
+
# @since 6.1.1
|
45
41
|
STRING_REPLACEMENT = '<REDACTED>'.freeze
|
46
42
|
|
47
43
|
# Get a string representation of the hash.
|
48
44
|
#
|
49
45
|
# @return [ String ] The string representation of the hash.
|
50
46
|
#
|
51
|
-
# @since 6.
|
47
|
+
# @since 6.1.1
|
52
48
|
def inspect
|
53
49
|
redacted_string(:inspect)
|
54
50
|
end
|
@@ -57,7 +53,7 @@ module Elasticsearch
|
|
57
53
|
#
|
58
54
|
# @return [ String ] The string representation of the hash.
|
59
55
|
#
|
60
|
-
# @since 6.
|
56
|
+
# @since 6.1.1
|
61
57
|
def to_s
|
62
58
|
redacted_string(:to_s)
|
63
59
|
end
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -9,6 +22,8 @@ module Elasticsearch
|
|
9
22
|
# @abstract Module with common functionality for transport implementations.
|
10
23
|
#
|
11
24
|
module Base
|
25
|
+
include Loggable
|
26
|
+
|
12
27
|
DEFAULT_PORT = 9200
|
13
28
|
DEFAULT_PROTOCOL = 'http'
|
14
29
|
DEFAULT_RELOAD_AFTER = 10_000 # Requests
|
@@ -20,7 +35,7 @@ module Elasticsearch
|
|
20
35
|
attr_reader :hosts, :options, :connections, :counter, :last_request_at, :protocol
|
21
36
|
attr_accessor :serializer, :sniffer, :logger, :tracer,
|
22
37
|
:reload_connections, :reload_after,
|
23
|
-
:resurrect_after
|
38
|
+
:resurrect_after, :max_retries
|
24
39
|
|
25
40
|
# Creates a new transport object
|
26
41
|
#
|
@@ -36,7 +51,7 @@ module Elasticsearch
|
|
36
51
|
@state_mutex = Mutex.new
|
37
52
|
|
38
53
|
@hosts = arguments[:hosts] || []
|
39
|
-
@options = arguments[:options]
|
54
|
+
@options = arguments[:options] || {}
|
40
55
|
@options[:http] ||= {}
|
41
56
|
@options[:retry_on_status] ||= []
|
42
57
|
|
@@ -56,6 +71,7 @@ module Elasticsearch
|
|
56
71
|
@reload_connections = options[:reload_connections]
|
57
72
|
@reload_after = options[:reload_connections].is_a?(Integer) ? options[:reload_connections] : DEFAULT_RELOAD_AFTER
|
58
73
|
@resurrect_after = options[:resurrect_after] || DEFAULT_RESURRECT_AFTER
|
74
|
+
@max_retries = options[:retry_on_failure].is_a?(Integer) ? options[:retry_on_failure] : DEFAULT_MAX_RETRIES
|
59
75
|
@retry_on_status = Array(options[:retry_on_status]).map { |d| d.to_i }
|
60
76
|
end
|
61
77
|
|
@@ -84,7 +100,7 @@ module Elasticsearch
|
|
84
100
|
__rebuild_connections :hosts => hosts, :options => options
|
85
101
|
self
|
86
102
|
rescue SnifferTimeoutError
|
87
|
-
|
103
|
+
log_error "[SnifferTimeoutError] Timeout when reloading connections."
|
88
104
|
self
|
89
105
|
end
|
90
106
|
|
@@ -131,15 +147,15 @@ module Elasticsearch
|
|
131
147
|
def __build_connections
|
132
148
|
Connections::Collection.new \
|
133
149
|
:connections => hosts.map { |host|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
150
|
+
host[:protocol] = host[:scheme] || options[:scheme] || options[:http][:scheme] || DEFAULT_PROTOCOL
|
151
|
+
host[:port] ||= options[:port] || options[:http][:port] || DEFAULT_PORT
|
152
|
+
if (options[:user] || options[:http][:user]) && !host[:user]
|
153
|
+
host[:user] ||= options[:user] || options[:http][:user]
|
154
|
+
host[:password] ||= options[:password] || options[:http][:password]
|
155
|
+
end
|
140
156
|
|
141
|
-
|
142
|
-
|
157
|
+
__build_connection(host, (options[:transport_options] || {}), @block)
|
158
|
+
},
|
143
159
|
:selector_class => options[:selector_class],
|
144
160
|
:selector => options[:selector]
|
145
161
|
end
|
@@ -167,20 +183,14 @@ module Elasticsearch
|
|
167
183
|
#
|
168
184
|
# @api private
|
169
185
|
#
|
170
|
-
def
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
# Log failed request
|
179
|
-
#
|
180
|
-
# @api private
|
181
|
-
#
|
182
|
-
def __log_failed(response)
|
183
|
-
logger.fatal "[#{response.status}] #{response.body}"
|
186
|
+
def __log_response(method, path, params, body, url, response, json, took, duration)
|
187
|
+
if logger
|
188
|
+
sanitized_url = url.to_s.gsub(/\/\/(.+):(.+)@/, '//' + '\1:' + SANITIZED_PASSWORD + '@')
|
189
|
+
log_info "#{method.to_s.upcase} #{sanitized_url} " +
|
190
|
+
"[status:#{response.status}, request:#{sprintf('%.3fs', duration)}, query:#{took}]"
|
191
|
+
log_debug "> #{__convert_to_json(body)}" if body
|
192
|
+
log_debug "< #{response.body}"
|
193
|
+
end
|
184
194
|
end
|
185
195
|
|
186
196
|
# Trace the request in the `curl` format
|
@@ -189,7 +199,7 @@ module Elasticsearch
|
|
189
199
|
#
|
190
200
|
def __trace(method, path, params, headers, body, url, response, json, took, duration)
|
191
201
|
trace_url = "http://localhost:9200/#{path}?pretty" +
|
192
|
-
|
202
|
+
( params.empty? ? '' : "&#{::Faraday::Utils::ParamsHash[params].to_query}" )
|
193
203
|
trace_body = body ? " -d '#{__convert_to_json(body, :pretty => true)}'" : ''
|
194
204
|
trace_command = "curl -X #{method.to_s.upcase}"
|
195
205
|
trace_command += " -H '#{headers.inject('') { |memo,item| memo << item[0] + ': ' + item[1] }}'" if headers && !headers.empty?
|
@@ -247,17 +257,10 @@ module Elasticsearch
|
|
247
257
|
# @raise [ServerError] If request failed on server
|
248
258
|
# @raise [Error] If no connection is available
|
249
259
|
#
|
250
|
-
def perform_request(method, path, params={}, body=nil, headers=nil,
|
260
|
+
def perform_request(method, path, params={}, body=nil, headers=nil, &block)
|
251
261
|
raise NoMethodError, "Implement this method in your transport class" unless block_given?
|
252
|
-
start = Time.now
|
262
|
+
start = Time.now
|
253
263
|
tries = 0
|
254
|
-
reload_on_failure = opts.fetch(:reload_on_failure, @options[:reload_on_failure])
|
255
|
-
|
256
|
-
max_retries = if opts.key?(:retry_on_failure)
|
257
|
-
opts[:retry_on_failure] === true ? DEFAULT_MAX_RETRIES : opts[:retry_on_failure]
|
258
|
-
elsif options.key?(:retry_on_failure)
|
259
|
-
options[:retry_on_failure] === true ? DEFAULT_MAX_RETRIES : options[:retry_on_failure]
|
260
|
-
end
|
261
264
|
|
262
265
|
params = params.clone
|
263
266
|
|
@@ -281,12 +284,12 @@ module Elasticsearch
|
|
281
284
|
__raise_transport_error(response) if response.status.to_i >= 300 && @retry_on_status.include?(response.status.to_i)
|
282
285
|
|
283
286
|
rescue Elasticsearch::Transport::Transport::ServerError => e
|
284
|
-
if
|
285
|
-
|
286
|
-
if tries <=
|
287
|
+
if @retry_on_status.include?(response.status)
|
288
|
+
log_warn "[#{e.class}] Attempt #{tries} to get response from #{url}"
|
289
|
+
if tries <= max_retries
|
287
290
|
retry
|
288
291
|
else
|
289
|
-
|
292
|
+
log_fatal "[#{e.class}] Cannot get response from #{url} after #{tries} tries"
|
290
293
|
raise e
|
291
294
|
end
|
292
295
|
else
|
@@ -294,21 +297,21 @@ module Elasticsearch
|
|
294
297
|
end
|
295
298
|
|
296
299
|
rescue *host_unreachable_exceptions => e
|
297
|
-
|
300
|
+
log_error "[#{e.class}] #{e.message} #{connection.host.inspect}"
|
298
301
|
|
299
302
|
connection.dead!
|
300
303
|
|
301
|
-
if reload_on_failure and tries < connections.all.size
|
302
|
-
|
304
|
+
if @options[:reload_on_failure] and tries < connections.all.size
|
305
|
+
log_warn "[#{e.class}] Reloading connections (attempt #{tries} of #{connections.all.size})"
|
303
306
|
reload_connections! and retry
|
304
307
|
end
|
305
308
|
|
306
|
-
if
|
307
|
-
|
309
|
+
if @options[:retry_on_failure]
|
310
|
+
log_warn "[#{e.class}] Attempt #{tries} connecting to #{connection.host.inspect}"
|
308
311
|
if tries <= max_retries
|
309
312
|
retry
|
310
313
|
else
|
311
|
-
|
314
|
+
log_fatal "[#{e.class}] Cannot connect to #{connection.host.inspect} after #{tries} tries"
|
312
315
|
raise e
|
313
316
|
end
|
314
317
|
else
|
@@ -316,27 +319,32 @@ module Elasticsearch
|
|
316
319
|
end
|
317
320
|
|
318
321
|
rescue Exception => e
|
319
|
-
|
322
|
+
log_fatal "[#{e.class}] #{e.message} (#{connection.host.inspect if connection})"
|
320
323
|
raise e
|
321
324
|
|
322
325
|
end #/begin
|
323
326
|
|
324
|
-
duration = Time.now-start
|
327
|
+
duration = Time.now - start
|
325
328
|
|
326
329
|
if response.status.to_i >= 300
|
327
|
-
|
330
|
+
__log_response method, path, params, body, url, response, nil, 'N/A', duration
|
328
331
|
__trace method, path, params, headers, body, url, response, nil, 'N/A', duration if tracer
|
329
332
|
|
330
333
|
# Log the failure only when `ignore` doesn't match the response status
|
331
|
-
|
334
|
+
unless ignore.include?(response.status.to_i)
|
335
|
+
log_fatal "[#{response.status}] #{response.body}"
|
336
|
+
end
|
332
337
|
|
333
338
|
__raise_transport_error response unless ignore.include?(response.status.to_i)
|
334
339
|
end
|
335
340
|
|
336
341
|
json = serializer.load(response.body) if response.body && !response.body.empty? && response.headers && response.headers["content-type"] =~ /json/
|
337
|
-
took = (json['took'] ? sprintf('%.3fs', json['took']/1000.0) : 'n/a') rescue 'n/a'
|
342
|
+
took = (json['took'] ? sprintf('%.3fs', json['took']/1000.0) : 'n/a') rescue 'n/a'
|
343
|
+
|
344
|
+
unless ignore.include?(response.status.to_i)
|
345
|
+
__log_response method, path, params, body, url, response, json, took, duration
|
346
|
+
end
|
338
347
|
|
339
|
-
__log method, path, params, body, url, response, json, took, duration if logger && !ignore.include?(response.status.to_i)
|
340
348
|
__trace method, path, params, headers, body, url, response, json, took, duration if tracer
|
341
349
|
|
342
350
|
Response.new response.status, json || response.body, response.headers
|
@@ -355,4 +363,4 @@ module Elasticsearch
|
|
355
363
|
end
|
356
364
|
end
|
357
365
|
end
|
358
|
-
end
|
366
|
+
end
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -19,9 +32,9 @@ module Elasticsearch
|
|
19
32
|
# @return [Response]
|
20
33
|
# @see Transport::Base#perform_request
|
21
34
|
#
|
22
|
-
def perform_request(method, path, params={}, body=nil, headers=nil
|
35
|
+
def perform_request(method, path, params={}, body=nil, headers=nil)
|
23
36
|
super do |connection, url|
|
24
|
-
connection.connection.url =
|
37
|
+
connection.connection.url = connection.full_url(path, params)
|
25
38
|
|
26
39
|
case method
|
27
40
|
when 'HEAD'
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
4
17
|
|
5
18
|
module Elasticsearch
|
6
19
|
module Transport
|
@@ -20,7 +33,7 @@ module Elasticsearch
|
|
20
33
|
# @return [Response]
|
21
34
|
# @see Transport::Base#perform_request
|
22
35
|
#
|
23
|
-
def perform_request(method, path, params={}, body=nil, headers=nil
|
36
|
+
def perform_request(method, path, params={}, body=nil, headers=nil)
|
24
37
|
super do |connection, url|
|
25
38
|
headers = headers || connection.connection.headers
|
26
39
|
|
@@ -47,7 +60,7 @@ module Elasticsearch
|
|
47
60
|
# @return [Array]
|
48
61
|
#
|
49
62
|
def host_unreachable_exceptions
|
50
|
-
[::Faraday::ConnectionFailed, ::Faraday::TimeoutError]
|
63
|
+
[::Faraday::Error::ConnectionFailed, ::Faraday::Error::TimeoutError]
|
51
64
|
end
|
52
65
|
end
|
53
66
|
end
|