elastic-transport 8.3.2 → 8.3.5
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/.github/workflows/license.yml +1 -1
- data/.github/workflows/otel.yml +2 -2
- data/.github/workflows/tests.yml +6 -7
- data/CHANGELOG.md +10 -0
- data/Gemfile +4 -6
- data/Gemfile-faraday1.gemfile +3 -3
- data/lib/elastic/transport/client.rb +5 -4
- data/lib/elastic/transport/meta_header.rb +12 -1
- data/lib/elastic/transport/transport/serializer/multi_json.rb +3 -3
- data/lib/elastic/transport/version.rb +1 -1
- data/test/unit/connection_test.rb +35 -37
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4543af71a663d5f638c673407101529237507d56e7e2034f0c7e9fd5dd78c6a
|
4
|
+
data.tar.gz: 39a000ce02f4cf2208d0ec41f51f133e74454748f90eb6617d08bac3aad7e572
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 747447a8e84b3f71f1b8244237809c2087e60de35426820d065de72fb57b9ab17094ee1fb95e2f228c41902098b1d2ba8fd1f248f6d2cf493785d50745c08ec0
|
7
|
+
data.tar.gz: 6923af2b78bf3a8ecb956038a878f1752723546dfdabd3d6d3492f545f9d51312807a8faf7a8e1adee21b34034d95569b01939172198eb572709d16e6e5ace53
|
data/.github/workflows/otel.yml
CHANGED
@@ -17,10 +17,10 @@ jobs:
|
|
17
17
|
fail-fast: false
|
18
18
|
matrix:
|
19
19
|
ruby: ['3.3', 'jruby-9.4']
|
20
|
-
es_version: ['8.
|
20
|
+
es_version: ['8.15.0-SNAPSHOT']
|
21
21
|
runs-on: ubuntu-latest
|
22
22
|
steps:
|
23
|
-
- uses: actions/checkout@
|
23
|
+
- uses: actions/checkout@v4
|
24
24
|
- name: Increase system limits
|
25
25
|
run: |
|
26
26
|
sudo swapoff -a
|
data/.github/workflows/tests.yml
CHANGED
@@ -15,11 +15,11 @@ jobs:
|
|
15
15
|
strategy:
|
16
16
|
fail-fast: false
|
17
17
|
matrix:
|
18
|
-
ruby: [
|
19
|
-
es_version: ['8.
|
18
|
+
ruby: ['3.0', '3.1', '3.2', '3.3', 'jruby-9.3', 'jruby-9.4']
|
19
|
+
es_version: ['8.14.2-SNAPSHOT', '8.15.0-SNAPSHOT', '8.16.0-SNAPSHOT']
|
20
20
|
runs-on: ubuntu-latest
|
21
21
|
steps:
|
22
|
-
- uses: actions/checkout@
|
22
|
+
- uses: actions/checkout@v4
|
23
23
|
- name: Increase system limits
|
24
24
|
run: |
|
25
25
|
sudo swapoff -a
|
@@ -53,11 +53,11 @@ jobs:
|
|
53
53
|
strategy:
|
54
54
|
fail-fast: false
|
55
55
|
matrix:
|
56
|
-
ruby: [
|
57
|
-
es_version: ['8.
|
56
|
+
ruby: ['3.0', '3.1', '3.2', '3.3', 'jruby-9.3']
|
57
|
+
es_version: ['8.16.0-SNAPSHOT']
|
58
58
|
runs-on: ubuntu-latest
|
59
59
|
steps:
|
60
|
-
- uses: actions/checkout@
|
60
|
+
- uses: actions/checkout@v4
|
61
61
|
- name: Increase system limits
|
62
62
|
run: |
|
63
63
|
sudo swapoff -a
|
@@ -76,7 +76,6 @@ jobs:
|
|
76
76
|
sudo apt-get update
|
77
77
|
sudo apt-get install libcurl4-openssl-dev
|
78
78
|
ruby -v
|
79
|
-
gem install bundler
|
80
79
|
BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle install
|
81
80
|
- name: faraday1 unit tests
|
82
81
|
run: BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:unit
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 8.3.5
|
2
|
+
|
3
|
+
- Small updates in source code documentation.
|
4
|
+
- Updates meta header for Elasticsearch Serverless.
|
5
|
+
- Fixes issues with ES_SERVERLESS_SERVICE_VERSION for backwards compatibility
|
6
|
+
|
7
|
+
## 8.3.3, 8.3.4 (yanked)
|
8
|
+
|
9
|
+
- Yanked due to errors.
|
10
|
+
|
1
11
|
## 8.3.2
|
2
12
|
|
3
13
|
- OpenTelemetry: In v8.3.0 and v8.3.1, the environment variable `OTEL_INSTRUMENTATION_ELASTICSEARCH_CAPTURE_SEARCH_QUERY` was available but is now deprecated in favor of `OTEL_RUBY_INSTRUMENTATION_ELASTICSEARCH_CAPTURE_SEARCH_QUERY`.
|
data/Gemfile
CHANGED
@@ -23,16 +23,14 @@ gemspec
|
|
23
23
|
group :development, :test do
|
24
24
|
gem 'faraday-httpclient'
|
25
25
|
gem 'faraday-net_http_persistent'
|
26
|
-
gem 'faraday-patron' unless defined? JRUBY_VERSION
|
27
26
|
gem 'faraday-typhoeus'
|
28
|
-
gem '
|
29
|
-
gem 'oj' unless defined? JRUBY_VERSION
|
27
|
+
gem 'opentelemetry-sdk', require: false if RUBY_VERSION >= '3.0'
|
30
28
|
if defined?(JRUBY_VERSION)
|
31
29
|
gem 'pry-nav'
|
32
30
|
else
|
31
|
+
gem 'faraday-patron'
|
32
|
+
gem 'oj'
|
33
33
|
gem 'pry-byebug'
|
34
34
|
end
|
35
|
-
|
36
|
-
gem 'opentelemetry-sdk', require: false
|
37
|
-
end
|
35
|
+
gem 'rspec'
|
38
36
|
end
|
data/Gemfile-faraday1.gemfile
CHANGED
@@ -23,18 +23,18 @@ source 'https://rubygems.org'
|
|
23
23
|
# $ BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:unit
|
24
24
|
|
25
25
|
gem 'faraday', '~> 1'
|
26
|
-
gemspec
|
26
|
+
gemspec
|
27
27
|
|
28
28
|
group :development, :test do
|
29
29
|
gem 'httpclient'
|
30
30
|
gem 'net-http-persistent'
|
31
|
-
gem 'patron' unless defined? JRUBY_VERSION
|
32
31
|
gem 'rspec'
|
33
32
|
gem 'typhoeus'
|
34
|
-
gem 'oj' unless defined? JRUBY_VERSION
|
35
33
|
if defined?(JRUBY_VERSION)
|
36
34
|
gem 'pry-nav'
|
37
35
|
else
|
38
36
|
gem 'pry-byebug'
|
37
|
+
gem 'oj'
|
38
|
+
gem 'patron'
|
39
39
|
end
|
40
40
|
end
|
@@ -83,7 +83,7 @@ module Elastic
|
|
83
83
|
#
|
84
84
|
# @option arguments [Integer] :sniffer_timeout Timeout for reloading connections in seconds (1 by default)
|
85
85
|
#
|
86
|
-
# @option arguments [Boolean,Number] :retry_on_failure Retry X times when request fails before raising
|
86
|
+
# @option arguments [Boolean,Number] :retry_on_failure Retry X times when request fails before raising an
|
87
87
|
# exception (false by default)
|
88
88
|
# @option arguments [Number] :delay_on_retry Delay in milliseconds between each retry (0 by default)
|
89
89
|
#
|
@@ -91,7 +91,8 @@ module Elastic
|
|
91
91
|
#
|
92
92
|
# @option arguments [Boolean] :reload_on_failure Reload connections after failure (false by default)
|
93
93
|
#
|
94
|
-
# @option arguments [Integer] :request_timeout The request timeout to be passed to transport in options
|
94
|
+
# @option arguments [Integer] :request_timeout The request timeout to be passed to transport in options in seconds
|
95
|
+
# (the default value is taken from the transport)
|
95
96
|
#
|
96
97
|
# @option arguments [Symbol] :adapter A specific adapter for Faraday (e.g. `:patron`)
|
97
98
|
#
|
@@ -110,7 +111,7 @@ module Elastic
|
|
110
111
|
#
|
111
112
|
# @option arguments [String] :send_get_body_as Specify the HTTP method to use for GET requests with a body.
|
112
113
|
# (Default: GET)
|
113
|
-
# @option arguments [
|
114
|
+
# @option arguments [Boolean] :compression Whether to compress requests. Gzip compression will be used.
|
114
115
|
# The default is false. Responses will automatically be inflated if they are compressed.
|
115
116
|
# If a custom transport object is used, it must handle the request compression and response inflation.
|
116
117
|
#
|
@@ -172,7 +173,7 @@ module Elastic
|
|
172
173
|
# Performs a request through delegation to {#transport}.
|
173
174
|
#
|
174
175
|
def perform_request(method, path, params = {}, body = nil, headers = nil, opts = {})
|
175
|
-
method = @send_get_body_as if 'GET'
|
176
|
+
method = @send_get_body_as if method == 'GET' && body
|
176
177
|
validate_ca_fingerprints if @ca_fingerprint
|
177
178
|
if @otel
|
178
179
|
# If no endpoint is specified in the opts, use the HTTP method name
|
@@ -41,6 +41,12 @@ module Elastic
|
|
41
41
|
def meta_header_service_version
|
42
42
|
if enterprise_search?
|
43
43
|
Elastic::ENTERPRISE_SERVICE_VERSION
|
44
|
+
elsif serverless?
|
45
|
+
if defined?(Elastic::ES_SERVERLESS_SERVICE_VERSION)
|
46
|
+
Elastic::ES_SERVERLESS_SERVICE_VERSION
|
47
|
+
else
|
48
|
+
Elastic::ELASTICSEARCH_SERVICE_VERSION
|
49
|
+
end
|
44
50
|
elsif elasticsearch?
|
45
51
|
Elastic::ELASTICSEARCH_SERVICE_VERSION
|
46
52
|
elsif defined?(Elasticsearch::VERSION)
|
@@ -60,6 +66,11 @@ module Elastic
|
|
60
66
|
called_from?('elasticsearch')
|
61
67
|
end
|
62
68
|
|
69
|
+
def serverless?
|
70
|
+
defined?(ElasticsearchServerless::CLIENT_VERSION) &&
|
71
|
+
called_from?('elasticsearch-serverless')
|
72
|
+
end
|
73
|
+
|
63
74
|
def called_from?(service)
|
64
75
|
!caller.select { |c| c.match?(service) }.empty?
|
65
76
|
end
|
@@ -70,7 +81,7 @@ module Elastic
|
|
70
81
|
def client_meta_version(version)
|
71
82
|
regexp = /^([0-9]+\.[0-9]+\.[0-9]+)(\.?[a-z0-9.-]+)?$/
|
72
83
|
match = version.match(regexp)
|
73
|
-
return "#{match[1]}p" if
|
84
|
+
return "#{match[1]}p" if match[2]
|
74
85
|
|
75
86
|
version
|
76
87
|
end
|
@@ -24,7 +24,7 @@ module Elastic
|
|
24
24
|
module Base
|
25
25
|
# @param transport [Object] The instance of transport which uses this serializer
|
26
26
|
#
|
27
|
-
def initialize(transport=nil)
|
27
|
+
def initialize(transport = nil)
|
28
28
|
@transport = transport
|
29
29
|
end
|
30
30
|
end
|
@@ -36,13 +36,13 @@ module Elastic
|
|
36
36
|
|
37
37
|
# De-serialize a Hash from JSON string
|
38
38
|
#
|
39
|
-
def load(string, options={})
|
39
|
+
def load(string, options = {})
|
40
40
|
::MultiJson.load(string, options)
|
41
41
|
end
|
42
42
|
|
43
43
|
# Serialize a Hash to JSON string
|
44
44
|
#
|
45
|
-
def dump(object, options={})
|
45
|
+
def dump(object, options = {})
|
46
46
|
::MultiJson.dump(object, options)
|
47
47
|
end
|
48
48
|
end
|
@@ -20,66 +20,66 @@ require 'test_helper'
|
|
20
20
|
class Elastic::Transport::Transport::Connections::ConnectionTest < Minitest::Test
|
21
21
|
include Elastic::Transport::Transport::Connections
|
22
22
|
|
23
|
-
context
|
24
|
-
should
|
23
|
+
context 'Connection' do
|
24
|
+
should 'be initialized with :host, :connection, and :options' do
|
25
25
|
c = Connection.new :host => 'x', :connection => 'y', :options => {}
|
26
26
|
assert_equal 'x', c.host
|
27
27
|
assert_equal 'y', c.connection
|
28
28
|
assert_instance_of Hash, c.options
|
29
29
|
end
|
30
30
|
|
31
|
-
should
|
31
|
+
should 'return full path' do
|
32
32
|
c = Connection.new
|
33
33
|
assert_equal '_search', c.full_path('_search')
|
34
34
|
assert_equal '_search', c.full_path('_search', {})
|
35
|
-
assert_equal '_search?foo=bar', c.full_path('_search', {:
|
36
|
-
assert_equal '_search?foo=bar+bam', c.full_path('_search', {:
|
35
|
+
assert_equal '_search?foo=bar', c.full_path('_search', {foo: 'bar'})
|
36
|
+
assert_equal '_search?foo=bar+bam', c.full_path('_search', {foo: 'bar bam'})
|
37
37
|
end
|
38
38
|
|
39
|
-
should
|
40
|
-
c = Connection.new :
|
41
|
-
assert_equal 'http://localhost:9200/_search?foo=bar', c.full_url('_search', {:
|
39
|
+
should 'return full url' do
|
40
|
+
c = Connection.new host: { protocol: 'http', host: 'localhost', port: '9200' }
|
41
|
+
assert_equal 'http://localhost:9200/_search?foo=bar', c.full_url('_search', { foo: 'bar' })
|
42
42
|
end
|
43
43
|
|
44
|
-
should
|
45
|
-
c = Connection.new :
|
46
|
-
assert_equal 'http://U:P@localhost:9200/_search?foo=bar', c.full_url('_search', {:
|
44
|
+
should 'return full url with credentials' do
|
45
|
+
c = Connection.new host: { protocol: 'http', user: 'U', password: 'P', host: 'localhost', port: '9200' }
|
46
|
+
assert_equal 'http://U:P@localhost:9200/_search?foo=bar', c.full_url('_search', { foo: 'bar' })
|
47
47
|
end
|
48
48
|
|
49
|
-
should
|
50
|
-
c = Connection.new :
|
51
|
-
assert_equal 'http://U%24%24%24:P%5E%5E%5E@localhost:9200/_search?foo=bar', c.full_url('_search', {:
|
49
|
+
should 'return full url with escaped credentials' do
|
50
|
+
c = Connection.new host: { protocol: 'http', user: 'U$$$', password: 'P^^^', host: 'localhost', port: '9200' }
|
51
|
+
assert_equal 'http://U%24%24%24:P%5E%5E%5E@localhost:9200/_search?foo=bar', c.full_url('_search', { foo: 'bar' })
|
52
52
|
end
|
53
53
|
|
54
|
-
should
|
55
|
-
c = Connection.new :
|
56
|
-
assert_equal 'http://localhost:9200/foo/_search?foo=bar', c.full_url('_search', {:
|
54
|
+
should 'return full url with path' do
|
55
|
+
c = Connection.new host: { protocol: 'http', host: 'localhost', port: '9200', path: '/foo' }
|
56
|
+
assert_equal 'http://localhost:9200/foo/_search?foo=bar', c.full_url('_search', { foo: 'bar' })
|
57
57
|
end
|
58
58
|
|
59
|
-
should
|
60
|
-
c = Connection.new :
|
61
|
-
assert_equal 'http://localhost:9200/foo/_search?foo=bar', c.full_url('/_search', {:
|
59
|
+
should 'return right full url with path when path starts with /' do
|
60
|
+
c = Connection.new host: { protocol: 'http', host: 'localhost', port: '9200', path: '/foo' }
|
61
|
+
assert_equal 'http://localhost:9200/foo/_search?foo=bar', c.full_url('/_search', { foo: 'bar' })
|
62
62
|
end
|
63
63
|
|
64
|
-
should
|
65
|
-
c = Connection.new
|
64
|
+
should 'have a string representation' do
|
65
|
+
c = Connection.new(host: 'x')
|
66
66
|
assert_match(/host: x/, c.to_s)
|
67
67
|
assert_match(/alive/, c.to_s)
|
68
68
|
end
|
69
69
|
|
70
|
-
should
|
70
|
+
should 'not be dead by default' do
|
71
71
|
c = Connection.new
|
72
72
|
assert ! c.dead?
|
73
73
|
end
|
74
74
|
|
75
|
-
should
|
75
|
+
should 'be dead when marked' do
|
76
76
|
c = Connection.new.dead!
|
77
77
|
assert c.dead?
|
78
78
|
assert_equal 1, c.failures
|
79
79
|
assert_in_delta c.dead_since, Time.now, 1
|
80
80
|
end
|
81
81
|
|
82
|
-
should
|
82
|
+
should 'be alive when marked' do
|
83
83
|
c = Connection.new.dead!
|
84
84
|
assert c.dead?
|
85
85
|
assert_equal 1, c.failures
|
@@ -90,7 +90,7 @@ class Elastic::Transport::Transport::Connections::ConnectionTest < Minitest::Tes
|
|
90
90
|
assert_equal 1, c.failures
|
91
91
|
end
|
92
92
|
|
93
|
-
should
|
93
|
+
should 'be healthy when marked' do
|
94
94
|
c = Connection.new.dead!
|
95
95
|
assert c.dead?
|
96
96
|
assert_equal 1, c.failures
|
@@ -101,35 +101,33 @@ class Elastic::Transport::Transport::Connections::ConnectionTest < Minitest::Tes
|
|
101
101
|
assert_equal 0, c.failures
|
102
102
|
end
|
103
103
|
|
104
|
-
should
|
104
|
+
should 'be resurrected if timeout passed' do
|
105
105
|
c = Connection.new.dead!
|
106
106
|
|
107
107
|
now = Time.now + 60
|
108
108
|
Time.stubs(:now).returns(now)
|
109
109
|
|
110
|
-
assert
|
111
|
-
assert
|
110
|
+
assert(c.resurrect!, c.inspect)
|
111
|
+
assert(!c.dead?, c.inspect)
|
112
112
|
end
|
113
113
|
|
114
|
-
should
|
114
|
+
should 'be resurrected if timeout passed for multiple failures' do
|
115
115
|
c = Connection.new.dead!.dead!
|
116
116
|
|
117
|
-
now = Time.now + 60*2
|
117
|
+
now = Time.now + 60 * 2
|
118
118
|
Time.stubs(:now).returns(now)
|
119
119
|
|
120
120
|
assert c.resurrect!, c.inspect
|
121
121
|
assert ! c.dead?, c.inspect
|
122
122
|
end
|
123
123
|
|
124
|
-
should
|
125
|
-
c1 = Connection.new(:
|
126
|
-
c2 = Connection.new(:
|
127
|
-
c3 = Connection.new(:
|
124
|
+
should 'implement the equality operator' do
|
125
|
+
c1 = Connection.new(host: { protocol: 'http', host: 'foo', port: 123 })
|
126
|
+
c2 = Connection.new(host: { protocol: 'http', host: 'foo', port: 123 })
|
127
|
+
c3 = Connection.new(host: { protocol: 'http', host: 'foo', port: 456 })
|
128
128
|
|
129
129
|
assert c1 == c2, "Connection #{c1} should be equal to #{c2}"
|
130
130
|
assert c2 != c3, "Connection #{c2} should NOT be equal to #{c3}"
|
131
131
|
end
|
132
|
-
|
133
132
|
end
|
134
|
-
|
135
133
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic-transport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.3.
|
4
|
+
version: 8.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic Client Library Maintainers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -340,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
340
340
|
- !ruby/object:Gem::Version
|
341
341
|
version: '0'
|
342
342
|
requirements: []
|
343
|
-
rubygems_version: 3.
|
343
|
+
rubygems_version: 3.4.19
|
344
344
|
signing_key:
|
345
345
|
specification_version: 4
|
346
346
|
summary: Low level Ruby client for Elastic services.
|