solrb 0.2.3 → 0.2.8
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/reviewdog.yml +20 -0
- data/.github/workflows/tests.yaml +37 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +10 -6
- data/README.md +47 -0
- data/lib/solr.rb +21 -1
- data/lib/solr/cloud/configuration.rb +2 -1
- data/lib/solr/cloud/helper_methods.rb +1 -1
- data/lib/solr/commands.rb +3 -2
- data/lib/solr/commit/request.rb +15 -5
- data/lib/solr/configuration.rb +27 -5
- data/lib/solr/connection.rb +6 -4
- data/lib/solr/data_import/request.rb +7 -1
- data/lib/solr/delete/request.rb +7 -1
- data/lib/solr/errors/solr_connection_failed_error.rb +3 -2
- data/lib/solr/helper_methods.rb +11 -0
- data/lib/solr/indexing/request.rb +7 -1
- data/lib/solr/master_slave/configuration.rb +38 -0
- data/lib/solr/master_slave/helper_methods.rb +25 -0
- data/lib/solr/master_slave/nodes_gray_list/disabled.rb +21 -0
- data/lib/solr/master_slave/nodes_gray_list/in_memory.rb +47 -0
- data/lib/solr/query/handler.rb +8 -7
- data/lib/solr/query/http_request_builder.rb +6 -12
- data/lib/solr/query/request.rb +19 -2
- data/lib/solr/query/request/boosting/dictionary_boost_function.rb +4 -3
- data/lib/solr/query/request/facet.rb +5 -2
- data/lib/solr/request/cloud/first_shard_leader_node_selection_strategy.rb +27 -0
- data/lib/solr/request/cloud/leader_node_selection_strategy.rb +21 -0
- data/lib/solr/request/default_node_selection_strategy.rb +2 -1
- data/lib/solr/request/master_slave/master_node_selection_strategy.rb +12 -0
- data/lib/solr/request/node_selection_strategy.rb +6 -0
- data/lib/solr/request/runner.rb +18 -11
- data/lib/solr/response/parser.rb +1 -1
- data/lib/solr/support/url_helper.rb +8 -3
- data/lib/solr/version.rb +1 -1
- data/solrb.gemspec +2 -3
- metadata +25 -35
- data/.circleci/config.yml +0 -69
- data/.circleci/run-with-local-config.sh +0 -7
- data/Gemfile.lock +0 -83
- data/lib/solr/request/first_shard_leader_node_selection_strategy.rb +0 -24
- data/lib/solr/request/leader_node_selection_strategy.rb +0 -18
data/lib/solr/response/parser.rb
CHANGED
@@ -12,7 +12,7 @@ module Solr
|
|
12
12
|
def call
|
13
13
|
# 404 is a special case, it didn't hit Solr (more likely than not)
|
14
14
|
return not_found_response if @raw_response.status == 404
|
15
|
-
parsed_body = JSON.parse(@raw_response.body).freeze
|
15
|
+
parsed_body = @raw_response.body ? JSON.parse(@raw_response.body).freeze : {}
|
16
16
|
http_status = parse_http_status
|
17
17
|
header = parse_header(parsed_body)
|
18
18
|
solr_error = parse_solr_error(parsed_body)
|
@@ -18,11 +18,16 @@ module Solr
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def core_url
|
21
|
-
Solr.cloud_enabled?
|
21
|
+
if Solr.cloud_enabled? || Solr.master_slave_enabled?
|
22
|
+
solr_cloud_or_master_slave_url
|
23
|
+
else
|
24
|
+
current_core.uri
|
25
|
+
end
|
22
26
|
end
|
23
27
|
|
24
|
-
def
|
25
|
-
|
28
|
+
def solr_cloud_or_master_slave_url
|
29
|
+
url = Solr.active_nodes_for(collection: current_core.name.to_s).first
|
30
|
+
File.join(url, current_core.name.to_s)
|
26
31
|
end
|
27
32
|
|
28
33
|
def current_core
|
data/lib/solr/version.rb
CHANGED
data/solrb.gemspec
CHANGED
@@ -24,12 +24,11 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency 'addressable'
|
25
25
|
spec.add_runtime_dependency 'faraday'
|
26
26
|
|
27
|
-
spec.add_development_dependency 'bundler'
|
27
|
+
spec.add_development_dependency 'bundler'
|
28
28
|
spec.add_development_dependency 'pry'
|
29
29
|
spec.add_development_dependency 'pry-byebug'
|
30
30
|
spec.add_development_dependency 'rake', '~> 10.0'
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency 'rubocop'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.80.1'
|
34
33
|
spec.add_development_dependency 'simplecov'
|
35
34
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adriano Luz
|
8
8
|
- Valentin Vasilyev
|
9
9
|
- Vladislav Syabruk
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-05-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -44,16 +44,16 @@ dependencies:
|
|
44
44
|
name: bundler
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '0'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - "
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
56
|
+
version: '0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: pry
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,34 +110,20 @@ dependencies:
|
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '3.0'
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: rspec_junit_formatter
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '0'
|
120
|
-
type: :development
|
121
|
-
prerelease: false
|
122
|
-
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - ">="
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '0'
|
127
113
|
- !ruby/object:Gem::Dependency
|
128
114
|
name: rubocop
|
129
115
|
requirement: !ruby/object:Gem::Requirement
|
130
116
|
requirements:
|
131
|
-
- - "
|
117
|
+
- - "~>"
|
132
118
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
119
|
+
version: 0.80.1
|
134
120
|
type: :development
|
135
121
|
prerelease: false
|
136
122
|
version_requirements: !ruby/object:Gem::Requirement
|
137
123
|
requirements:
|
138
|
-
- - "
|
124
|
+
- - "~>"
|
139
125
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
126
|
+
version: 0.80.1
|
141
127
|
- !ruby/object:Gem::Dependency
|
142
128
|
name: simplecov
|
143
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,7 +138,7 @@ dependencies:
|
|
152
138
|
- - ">="
|
153
139
|
- !ruby/object:Gem::Version
|
154
140
|
version: '0'
|
155
|
-
description:
|
141
|
+
description:
|
156
142
|
email:
|
157
143
|
- adriano.luz@machinio.com
|
158
144
|
- valentin@machinio.com
|
@@ -161,13 +147,12 @@ executables: []
|
|
161
147
|
extensions: []
|
162
148
|
extra_rdoc_files: []
|
163
149
|
files:
|
164
|
-
- ".
|
165
|
-
- ".
|
150
|
+
- ".github/workflows/reviewdog.yml"
|
151
|
+
- ".github/workflows/tests.yaml"
|
166
152
|
- ".gitignore"
|
167
153
|
- ".rspec"
|
168
154
|
- ".rubocop.yml"
|
169
155
|
- Gemfile
|
170
|
-
- Gemfile.lock
|
171
156
|
- LICENSE.txt
|
172
157
|
- README.md
|
173
158
|
- Rakefile
|
@@ -198,8 +183,13 @@ files:
|
|
198
183
|
- lib/solr/errors/solr_url_not_defined_error.rb
|
199
184
|
- lib/solr/errors/zookeeper_required.rb
|
200
185
|
- lib/solr/grouped_document_collection.rb
|
186
|
+
- lib/solr/helper_methods.rb
|
201
187
|
- lib/solr/indexing/document.rb
|
202
188
|
- lib/solr/indexing/request.rb
|
189
|
+
- lib/solr/master_slave/configuration.rb
|
190
|
+
- lib/solr/master_slave/helper_methods.rb
|
191
|
+
- lib/solr/master_slave/nodes_gray_list/disabled.rb
|
192
|
+
- lib/solr/master_slave/nodes_gray_list/in_memory.rb
|
203
193
|
- lib/solr/query/handler.rb
|
204
194
|
- lib/solr/query/http_request_builder.rb
|
205
195
|
- lib/solr/query/request.rb
|
@@ -235,10 +225,11 @@ files:
|
|
235
225
|
- lib/solr/query/response/field_facets.rb
|
236
226
|
- lib/solr/query/response/parser.rb
|
237
227
|
- lib/solr/query/response/spellcheck.rb
|
228
|
+
- lib/solr/request/cloud/first_shard_leader_node_selection_strategy.rb
|
229
|
+
- lib/solr/request/cloud/leader_node_selection_strategy.rb
|
238
230
|
- lib/solr/request/default_node_selection_strategy.rb
|
239
|
-
- lib/solr/request/first_shard_leader_node_selection_strategy.rb
|
240
231
|
- lib/solr/request/http_request.rb
|
241
|
-
- lib/solr/request/
|
232
|
+
- lib/solr/request/master_slave/master_node_selection_strategy.rb
|
242
233
|
- lib/solr/request/node_selection_strategy.rb
|
243
234
|
- lib/solr/request/runner.rb
|
244
235
|
- lib/solr/response.rb
|
@@ -259,7 +250,7 @@ homepage: https://github.com/machinio/solrb
|
|
259
250
|
licenses:
|
260
251
|
- MIT
|
261
252
|
metadata: {}
|
262
|
-
post_install_message:
|
253
|
+
post_install_message:
|
263
254
|
rdoc_options: []
|
264
255
|
require_paths:
|
265
256
|
- lib
|
@@ -274,9 +265,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
265
|
- !ruby/object:Gem::Version
|
275
266
|
version: '0'
|
276
267
|
requirements: []
|
277
|
-
|
278
|
-
|
279
|
-
signing_key:
|
268
|
+
rubygems_version: 3.0.3
|
269
|
+
signing_key:
|
280
270
|
specification_version: 4
|
281
271
|
summary: Solr Ruby client with a nice object-oriented API
|
282
272
|
test_files: []
|
data/.circleci/config.yml
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# Ruby CircleCI 2.0 configuration file
|
2
|
-
#
|
3
|
-
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
|
-
#
|
5
|
-
version: 2
|
6
|
-
jobs:
|
7
|
-
build:
|
8
|
-
docker:
|
9
|
-
# primary image where all specs are run
|
10
|
-
- image: circleci/ruby:2.5.1-node-browsers
|
11
|
-
environment:
|
12
|
-
SOLR_URL: http://localhost:8983/solr/test-core
|
13
|
-
# service images that primary image will use
|
14
|
-
- image: solr:7.4.0
|
15
|
-
|
16
|
-
working_directory: ~/repo
|
17
|
-
|
18
|
-
steps:
|
19
|
-
- checkout
|
20
|
-
|
21
|
-
# Download and cache dependencies
|
22
|
-
- restore_cache:
|
23
|
-
keys:
|
24
|
-
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
25
|
-
# fallback to using the latest cache if no exact match is found
|
26
|
-
- v1-dependencies-
|
27
|
-
|
28
|
-
- run:
|
29
|
-
name: install dependencies
|
30
|
-
command: |
|
31
|
-
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
32
|
-
|
33
|
-
- save_cache:
|
34
|
-
paths:
|
35
|
-
- ./vendor/bundle
|
36
|
-
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
37
|
-
|
38
|
-
- run:
|
39
|
-
name: Wait for Solr
|
40
|
-
command: dockerize -wait tcp://localhost:8983 -timeout 1m
|
41
|
-
|
42
|
-
- run:
|
43
|
-
name: Create a test core
|
44
|
-
command: curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=test-core&configSet=_default'
|
45
|
-
|
46
|
-
- run:
|
47
|
-
name: Disable field type guessing
|
48
|
-
command: |
|
49
|
-
curl http://localhost:8983/solr/test-core/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'
|
50
|
-
|
51
|
-
|
52
|
-
- run:
|
53
|
-
name: run tests
|
54
|
-
command: |
|
55
|
-
mkdir /tmp/test-results
|
56
|
-
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
57
|
-
|
58
|
-
bundle exec rspec --format progress \
|
59
|
-
--format RspecJunitFormatter \
|
60
|
-
--out /tmp/test-results/rspec.xml \
|
61
|
-
--format progress \
|
62
|
-
$TEST_FILES
|
63
|
-
|
64
|
-
# collect reports
|
65
|
-
- store_test_results:
|
66
|
-
path: /tmp/test-results
|
67
|
-
- store_artifacts:
|
68
|
-
path: /tmp/test-results
|
69
|
-
destination: test-results
|
data/Gemfile.lock
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
solrb (0.2.2)
|
5
|
-
addressable
|
6
|
-
faraday
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.6.0)
|
12
|
-
public_suffix (>= 2.0.2, < 4.0)
|
13
|
-
ast (2.4.0)
|
14
|
-
byebug (10.0.2)
|
15
|
-
coderay (1.1.2)
|
16
|
-
diff-lcs (1.3)
|
17
|
-
docile (1.3.1)
|
18
|
-
faraday (0.15.4)
|
19
|
-
multipart-post (>= 1.2, < 3)
|
20
|
-
jaro_winkler (1.5.1)
|
21
|
-
json (2.1.0)
|
22
|
-
method_source (0.9.0)
|
23
|
-
multipart-post (2.0.0)
|
24
|
-
parallel (1.12.1)
|
25
|
-
parser (2.5.1.2)
|
26
|
-
ast (~> 2.4.0)
|
27
|
-
powerpack (0.1.2)
|
28
|
-
pry (0.11.3)
|
29
|
-
coderay (~> 1.1.0)
|
30
|
-
method_source (~> 0.9.0)
|
31
|
-
pry-byebug (3.6.0)
|
32
|
-
byebug (~> 10.0)
|
33
|
-
pry (~> 0.10)
|
34
|
-
public_suffix (3.0.3)
|
35
|
-
rainbow (3.0.0)
|
36
|
-
rake (10.5.0)
|
37
|
-
rspec (3.8.0)
|
38
|
-
rspec-core (~> 3.8.0)
|
39
|
-
rspec-expectations (~> 3.8.0)
|
40
|
-
rspec-mocks (~> 3.8.0)
|
41
|
-
rspec-core (3.8.0)
|
42
|
-
rspec-support (~> 3.8.0)
|
43
|
-
rspec-expectations (3.8.1)
|
44
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
45
|
-
rspec-support (~> 3.8.0)
|
46
|
-
rspec-mocks (3.8.0)
|
47
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
-
rspec-support (~> 3.8.0)
|
49
|
-
rspec-support (3.8.0)
|
50
|
-
rspec_junit_formatter (0.4.1)
|
51
|
-
rspec-core (>= 2, < 4, != 2.12.0)
|
52
|
-
rubocop (0.59.1)
|
53
|
-
jaro_winkler (~> 1.5.1)
|
54
|
-
parallel (~> 1.10)
|
55
|
-
parser (>= 2.5, != 2.5.1.1)
|
56
|
-
powerpack (~> 0.1)
|
57
|
-
rainbow (>= 2.2.2, < 4.0)
|
58
|
-
ruby-progressbar (~> 1.7)
|
59
|
-
unicode-display_width (~> 1.0, >= 1.0.1)
|
60
|
-
ruby-progressbar (1.10.0)
|
61
|
-
simplecov (0.16.1)
|
62
|
-
docile (~> 1.1)
|
63
|
-
json (>= 1.8, < 3)
|
64
|
-
simplecov-html (~> 0.10.0)
|
65
|
-
simplecov-html (0.10.2)
|
66
|
-
unicode-display_width (1.4.0)
|
67
|
-
|
68
|
-
PLATFORMS
|
69
|
-
ruby
|
70
|
-
|
71
|
-
DEPENDENCIES
|
72
|
-
bundler (~> 1.16)
|
73
|
-
pry
|
74
|
-
pry-byebug
|
75
|
-
rake (~> 10.0)
|
76
|
-
rspec (~> 3.0)
|
77
|
-
rspec_junit_formatter
|
78
|
-
rubocop
|
79
|
-
simplecov
|
80
|
-
solrb!
|
81
|
-
|
82
|
-
BUNDLED WITH
|
83
|
-
1.16.6
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Solr
|
2
|
-
module Request
|
3
|
-
class FirstShardLeaderNodeSelectionStrategy < NodeSelectionStrategy
|
4
|
-
def call
|
5
|
-
leader = first_shard_leader_replica_node_for(collection: collection_name)
|
6
|
-
replicas = solr_cloud_active_nodes_urls.shuffle
|
7
|
-
([leader] + replicas).flatten.uniq
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def first_shard_leader_replica_node_for(collection:)
|
13
|
-
shards = Solr.shards_for(collection: collection)
|
14
|
-
return unless shards
|
15
|
-
first_shard_name = shards.sort.first
|
16
|
-
Solr.leader_replica_node_for(collection: collection, shard: first_shard_name)
|
17
|
-
end
|
18
|
-
|
19
|
-
def solr_cloud_active_nodes_urls
|
20
|
-
Solr.active_nodes_for(collection: collection_name)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Solr
|
2
|
-
module Request
|
3
|
-
class LeaderNodeSelectionStrategy < NodeSelectionStrategy
|
4
|
-
def call
|
5
|
-
[leader_replica_node_for(collection: collection_name)]
|
6
|
-
end
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def leader_replica_node_for(collection:)
|
11
|
-
shards = Solr.shards_for(collection: collection)
|
12
|
-
return unless shards
|
13
|
-
first_shard_name = shards.sort.first
|
14
|
-
Solr.leader_replica_node_for(collection: collection, shard: first_shard_name)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|