elasticsearch-transport 1.0.9 → 1.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/lib/elasticsearch/transport/client.rb +4 -0
- data/lib/elasticsearch/transport/transport/base.rb +6 -3
- data/lib/elasticsearch/transport/transport/http/manticore.rb +2 -1
- data/lib/elasticsearch/transport/version.rb +1 -1
- data/test/integration/client_test.rb +10 -0
- data/test/unit/client_test.rb +10 -0
- data/test/unit/transport_base_test.rb +18 -0
- data/test/unit/transport_manticore_test.rb +9 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daee16fc525cec703b65be13c6ef73521ef246ed
|
4
|
+
data.tar.gz: 8cbc0e8fb197177c69ee2c9eae1f2ce5a3c97eb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: deebc659d3b87ba4c8eaa6333f8f98f7d946c71aabfcf4833dfbdca0afdc9af998b119aaccdc2730667981cacf48f2274d79a75490a2f14a7adb7066f703fb31
|
7
|
+
data.tar.gz: 170dee5bd767cf824e2c69b8233ff642213b3d0a49dbac53931f3287289cca566f7a15818d83492a6420e3b0b3eb887356348d22919bd9927171d1c87bd36a16
|
data/README.md
CHANGED
@@ -155,6 +155,15 @@ You can pass the client any conforming logger implementation:
|
|
155
155
|
|
156
156
|
client = Elasticsearch::Client.new logger: log
|
157
157
|
|
158
|
+
### Setting Timeouts
|
159
|
+
|
160
|
+
For many operations in Elasticsearch, the default timeouts of HTTP libraries are too low.
|
161
|
+
To increase the timeout, you can use the `request_timeout` parameter:
|
162
|
+
|
163
|
+
Elasticsearch::Client.new request_timeout: 5*60
|
164
|
+
|
165
|
+
You can also use the `transport_options` argument documented below.
|
166
|
+
|
158
167
|
### Randomizing Hosts
|
159
168
|
|
160
169
|
If you pass multiple hosts to the client, it rotates across them in a round-robin fashion, by default.
|
@@ -59,6 +59,8 @@ module Elasticsearch
|
|
59
59
|
#
|
60
60
|
# @option arguments [Boolean] :reload_on_failure Reload connections after failure (false by default)
|
61
61
|
#
|
62
|
+
# @option arguments [Integer] :request_timeout The request timeout to be passed to transport in options
|
63
|
+
#
|
62
64
|
# @option arguments [Symbol] :adapter A specific adapter for Faraday (e.g. `:patron`)
|
63
65
|
#
|
64
66
|
# @option arguments [Hash] :transport_options Options to be passed to the `Faraday::Connection` constructor
|
@@ -92,6 +94,8 @@ module Elasticsearch
|
|
92
94
|
arguments[:randomize_hosts] ||= false
|
93
95
|
arguments[:transport_options] ||= {}
|
94
96
|
|
97
|
+
arguments[:transport_options].update(request: { timeout: arguments[:request_timeout] } ) if arguments[:request_timeout]
|
98
|
+
|
95
99
|
@send_get_body_as = arguments[:send_get_body_as] || 'GET'
|
96
100
|
|
97
101
|
transport_class = arguments[:transport_class] || DEFAULT_TRANSPORT_CLASS
|
@@ -13,7 +13,9 @@ module Elasticsearch
|
|
13
13
|
DEFAULT_SERIALIZER_CLASS = Serializer::MultiJson
|
14
14
|
|
15
15
|
attr_reader :hosts, :options, :connections, :counter, :last_request_at, :protocol
|
16
|
-
attr_accessor :serializer, :sniffer, :logger, :tracer,
|
16
|
+
attr_accessor :serializer, :sniffer, :logger, :tracer,
|
17
|
+
:reload_connections, :reload_after,
|
18
|
+
:resurrect_after, :max_retries
|
17
19
|
|
18
20
|
# Creates a new transport object.
|
19
21
|
#
|
@@ -40,6 +42,7 @@ module Elasticsearch
|
|
40
42
|
@sniffer = options[:sniffer_class] ? options[:sniffer_class].new(self) : Sniffer.new(self)
|
41
43
|
@counter = 0
|
42
44
|
@last_request_at = Time.now
|
45
|
+
@reload_connections = options[:reload_connections]
|
43
46
|
@reload_after = options[:reload_connections].is_a?(Fixnum) ? options[:reload_connections] : DEFAULT_RELOAD_AFTER
|
44
47
|
@resurrect_after = options[:resurrect_after] || DEFAULT_RESURRECT_AFTER
|
45
48
|
@max_retries = options[:retry_on_failure].is_a?(Fixnum) ? options[:retry_on_failure] : DEFAULT_MAX_RETRIES
|
@@ -59,7 +62,7 @@ module Elasticsearch
|
|
59
62
|
connection = connections.get_connection(options)
|
60
63
|
@counter += 1
|
61
64
|
|
62
|
-
reload_connections! if
|
65
|
+
reload_connections! if reload_connections && counter % reload_after == 0
|
63
66
|
connection
|
64
67
|
end
|
65
68
|
|
@@ -211,7 +214,7 @@ module Elasticsearch
|
|
211
214
|
end
|
212
215
|
|
213
216
|
rescue Exception => e
|
214
|
-
logger.fatal "[#{e.class}] #{e.message} (#{connection.host.inspect})" if logger
|
217
|
+
logger.fatal "[#{e.class}] #{e.message} (#{connection.host.inspect if connection})" if logger
|
215
218
|
raise e
|
216
219
|
end
|
217
220
|
|
@@ -84,7 +84,8 @@ module Elasticsearch
|
|
84
84
|
@request_options[:headers] = options[:headers]
|
85
85
|
end
|
86
86
|
|
87
|
-
client_options =
|
87
|
+
client_options = options[:transport_options] || {}
|
88
|
+
client_options[:ssl] = options[:ssl] || {}
|
88
89
|
|
89
90
|
Connections::Collection.new \
|
90
91
|
:connections => hosts.map { |host|
|
@@ -49,6 +49,16 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
should "pass options to the transport" do
|
53
|
+
@client = Elasticsearch::Client.new \
|
54
|
+
host: "localhost:#{@port}",
|
55
|
+
logger: (ENV['QUIET'] ? nil : @logger),
|
56
|
+
transport_options: { headers: { content_type: 'application/yaml' } }
|
57
|
+
|
58
|
+
response = @client.perform_request 'GET', '_cluster/health'
|
59
|
+
assert_match /---\ncluster_name:/, response.body.to_s
|
60
|
+
end
|
61
|
+
|
52
62
|
context "with round robin selector" do
|
53
63
|
setup do
|
54
64
|
@client = Elasticsearch::Client.new \
|
data/test/unit/client_test.rb
CHANGED
@@ -63,6 +63,16 @@ class Elasticsearch::Transport::ClientTest < Test::Unit::TestCase
|
|
63
63
|
assert_match /Faraday/, client.transport.connections.first.connection.headers['User-Agent']
|
64
64
|
end
|
65
65
|
|
66
|
+
should "pass options to the transport" do
|
67
|
+
client = Elasticsearch::Transport::Client.new :transport_options => { :foo => 'bar' }
|
68
|
+
assert_equal 'bar', client.transport.options[:transport_options][:foo]
|
69
|
+
end
|
70
|
+
|
71
|
+
should "merge request_timeout to the transport options" do
|
72
|
+
client = Elasticsearch::Transport::Client.new :request_timeout => 120
|
73
|
+
assert_equal 120, client.transport.options[:transport_options][:request][:timeout]
|
74
|
+
end
|
75
|
+
|
66
76
|
context "when passed hosts" do
|
67
77
|
should "have localhost by default" do
|
68
78
|
c = Elasticsearch::Transport::Client.new
|
@@ -100,6 +100,24 @@ class Elasticsearch::Transport::Transport::BaseTest < Test::Unit::TestCase
|
|
100
100
|
12.times { @transport.get_connection }
|
101
101
|
assert_equal 12, @transport.counter
|
102
102
|
end
|
103
|
+
|
104
|
+
should "not reload connections by default" do
|
105
|
+
@transport = DummyTransportPerformer.new
|
106
|
+
@transport.stubs(:connections).returns(stub :get_connection => Object.new)
|
107
|
+
@transport.expects(:reload_connections!).never
|
108
|
+
|
109
|
+
10_010.times { @transport.get_connection }
|
110
|
+
assert_equal 10_010, @transport.counter
|
111
|
+
end
|
112
|
+
|
113
|
+
should "not reload connections when the option is set to false" do
|
114
|
+
@transport = DummyTransportPerformer.new :options => { :reload_connections => false }
|
115
|
+
@transport.stubs(:connections).returns(stub :get_connection => Object.new)
|
116
|
+
@transport.expects(:reload_connections!).never
|
117
|
+
|
118
|
+
10_010.times { @transport.get_connection }
|
119
|
+
assert_equal 10_010, @transport.counter
|
120
|
+
end
|
103
121
|
end
|
104
122
|
|
105
123
|
context "performing a request" do
|
@@ -102,6 +102,15 @@ else
|
|
102
102
|
::Manticore::Client.expects(:new).with(options)
|
103
103
|
transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
|
104
104
|
end
|
105
|
+
|
106
|
+
should "pass :transport_options to Manticore::Client" do
|
107
|
+
options = {
|
108
|
+
:transport_options => { :potatoes => 1 }
|
109
|
+
}
|
110
|
+
|
111
|
+
::Manticore::Client.expects(:new).with(:potatoes => 1, :ssl => {})
|
112
|
+
transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
|
113
|
+
end
|
105
114
|
end
|
106
115
|
|
107
116
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-transport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|