solrb 0.2.2 → 0.2.3

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: a5f653429c9d04cf698507f5a295d6163704bebce83e28af6d37e72c68579218
4
- data.tar.gz: '0118530a85c2a43f534227e7494482109b38b6bc197a14cccf03e1672dba2fe1'
3
+ metadata.gz: e9ae1ed7f5931da9955de331a59ca5c10598882b38e137136464a136c9b9b079
4
+ data.tar.gz: 91b33fad87d4bc4b286d591a0b2c91d1c51a63e59e9a53f9cc8e8891592fba87
5
5
  SHA512:
6
- metadata.gz: d0ceb6776fad084292047ac498f7112834369526e67a55aa6404fa8c44a9eaba181325a940c84189f09434f020a463509bf0a9d9085ef17784b5df562f3e5fa2
7
- data.tar.gz: e1340426003c2ab5813f252ea71e358cd87c88ad8c3364894e9a9650ea0b469f34299429c439564db7593b7fb129d605b252c6ef8370b859bbd5f6e6e41cc772
6
+ metadata.gz: 1539610c599f2493f8b3d6f0fd0c9b926b69032a2bffc0b0519aaf73c0e5175d63196657893452ce11b147a45243e648c683983049e0f685503be21ec6d60506
7
+ data.tar.gz: 8d059163628f2c9220a467d6cada61e7b26cb088cc2db82d6b02f14836875f6089e5eb001de0d9dea8f3a74f92eb498bd26ac84a54e85901b7feefadc17b7b62
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- solrb (0.2.1)
4
+ solrb (0.2.2)
5
5
  addressable
6
6
  faraday
7
7
 
data/lib/solr/commands.rb CHANGED
@@ -5,20 +5,24 @@ require 'solr/data_import/request'
5
5
 
6
6
  module Solr
7
7
  module Commands
8
- def commit
9
- Solr::Commit::Request.new.run
8
+ def commit(open_searcher: true, runner_options: nil)
9
+ Solr::Commit::Request.new.run(open_searcher: open_searcher,
10
+ runner_options: runner_options)
10
11
  end
11
12
 
12
- def delete_by_id(id, commit: false)
13
- Solr::Delete::Request.new(id: id).run(commit: commit)
13
+ def delete_by_id(id, commit: false, runner_options: nil)
14
+ request = Solr::Delete::Request.new(id: id)
15
+ request.run(commit: commit, runner_options: runner_options)
14
16
  end
15
17
 
16
- def delete_by_query(query, commit: false)
17
- Solr::Delete::Request.new(query: query).run(commit: commit)
18
+ def delete_by_query(query, commit: false, runner_options: nil)
19
+ request = Solr::Delete::Request.new(query: query)
20
+ request.run(commit: commit, runner_options: runner_options)
18
21
  end
19
22
 
20
- def data_import(params)
21
- Solr::DataImport::Request.new(params).run
23
+ def data_import(params, runner_options: nil)
24
+ request = Solr::DataImport::Request.new(params)
25
+ request.run(runner_options: runner_options)
22
26
  end
23
27
  end
24
28
  end
@@ -3,9 +3,22 @@ module Solr
3
3
  class Request
4
4
  PATH = '/update'.freeze
5
5
 
6
- def run
7
- http_request = Solr::Request::HttpRequest.new(path: PATH, url_params: { commit: true }, method: :post)
8
- Solr::Request::Runner.call(request: http_request)
6
+ def run(open_searcher: true, runner_options: nil)
7
+ http_request = build_http_request(open_searcher)
8
+ options = default_runner_options.merge(runner_options || {})
9
+ Solr::Request::Runner.call(request: http_request, **options)
10
+ end
11
+
12
+ private
13
+
14
+ def default_runner_options
15
+ { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
16
+ end
17
+
18
+ def build_http_request(open_searcher)
19
+ Solr::Request::HttpRequest.new(path: PATH,
20
+ url_params: { commit: true, openSearcher: open_searcher },
21
+ method: :post)
9
22
  end
10
23
  end
11
24
  end
@@ -1,5 +1,3 @@
1
- require 'solr/request/first_shard_leader_node_selection_strategy'
2
-
3
1
  module Solr
4
2
  module DataImport
5
3
  class Request
@@ -14,13 +12,16 @@ module Solr
14
12
  # We want to make sure we send every dataimport request to the same node because this same class
15
13
  # could be used to start a dataimport and to get dataimport progress data afterwards.
16
14
  # To make it consistent we will send dataimport requests only to the first shard leader replica
17
- def run
15
+ def run(runner_options: nil)
18
16
  http_request = Solr::Request::HttpRequest.new(path: PATH, url_params: params, method: :get)
19
- Solr::Request::Runner.call(request: http_request, node_selection_strategy: build_node_selection_strategy)
17
+ options = default_runner_options.merge(runner_options || {})
18
+ Solr::Request::Runner.call(request: http_request, **options)
20
19
  end
21
20
 
22
- def build_node_selection_strategy
23
- Solr::Request::FirstShardLeaderNodeSelectionStrategy
21
+ private
22
+
23
+ def default_runner_options
24
+ { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
24
25
  end
25
26
  end
26
27
  end
@@ -12,15 +12,23 @@ module Solr
12
12
  @delete_command = { delete: options }
13
13
  end
14
14
 
15
- def run(commit: false)
15
+ def run(commit: false, runner_options: nil)
16
16
  http_request = build_http_request(commit)
17
- Solr::Request::Runner.call(request: http_request)
17
+ options = default_runner_options.merge(runner_options || {})
18
+ Solr::Request::Runner.call(request: http_request, **options)
18
19
  end
19
20
 
20
21
  private
21
22
 
23
+ def default_runner_options
24
+ { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
25
+ end
26
+
22
27
  def build_http_request(commit)
23
- Solr::Request::HttpRequest.new(path: PATH, body: delete_command, url_params: { commit: commit }, method: :post)
28
+ Solr::Request::HttpRequest.new(path: PATH,
29
+ body: delete_command,
30
+ url_params: { commit: commit },
31
+ method: :post)
24
32
  end
25
33
 
26
34
  def validate_delete_options!(options)
@@ -3,7 +3,7 @@ module Solr
3
3
  class SolrConnectionFailedError < StandardError
4
4
  def initialize(solr_urls)
5
5
  message = <<~MESSAGE
6
- Could not connection to any available solr instance:
6
+ Could not connect to any available solr instance:
7
7
  #{solr_urls.join(', ')}
8
8
  MESSAGE
9
9
  super(message)
@@ -1,6 +1,3 @@
1
- require 'solr/request/http_request'
2
- require 'solr/request/leader_node_selection_strategy'
3
-
4
1
  module Solr
5
2
  module Indexing
6
3
  class Request
@@ -12,14 +9,18 @@ module Solr
12
9
  @documents = documents
13
10
  end
14
11
 
15
- def run(commit: false, options: {})
12
+ def run(commit: false, runner_options: nil)
16
13
  http_request = build_http_request(commit)
17
- runner_options = { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
18
- Solr::Request::Runner.call(request: http_request, **runner_options.merge(options))
14
+ options = default_runner_options.merge(runner_options || {})
15
+ Solr::Request::Runner.call(request: http_request, **options)
19
16
  end
20
17
 
21
18
  private
22
19
 
20
+ def default_runner_options
21
+ { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
22
+ end
23
+
23
24
  def build_http_request(commit)
24
25
  Solr::Request::HttpRequest.new(path: PATH, body: documents, url_params: { commit: commit }, method: :post)
25
26
  end
@@ -1,16 +1,6 @@
1
1
  module Solr
2
2
  module Request
3
- class DefaultNodeSelectionStrategy
4
- attr_reader :collection_name
5
-
6
- def self.call(collection_name)
7
- new(collection_name).call
8
- end
9
-
10
- def initialize(collection_name)
11
- @collection_name = collection_name
12
- end
13
-
3
+ class DefaultNodeSelectionStrategy < NodeSelectionStrategy
14
4
  def call
15
5
  Solr.active_nodes_for(collection: collection_name).shuffle
16
6
  end
@@ -1,18 +1,10 @@
1
1
  module Solr
2
2
  module Request
3
- class FirstShardLeaderNodeSelectionStrategy
4
- def self.call(collection_name)
5
- new(collection_name).call
6
- end
7
-
8
- def initialize(collection_name)
9
- @collection_name = collection_name
10
- end
11
-
3
+ class FirstShardLeaderNodeSelectionStrategy < NodeSelectionStrategy
12
4
  def call
13
- return [solr_url] unless Solr.cloud_enabled?
14
-
15
- ([first_shard_leader_replica_node_for(collection: @collection_name)] + solr_cloud_active_nodes_urls.shuffle).flatten.uniq
5
+ leader = first_shard_leader_replica_node_for(collection: collection_name)
6
+ replicas = solr_cloud_active_nodes_urls.shuffle
7
+ ([leader] + replicas).flatten.uniq
16
8
  end
17
9
 
18
10
  private
@@ -25,7 +17,7 @@ module Solr
25
17
  end
26
18
 
27
19
  def solr_cloud_active_nodes_urls
28
- Solr.active_nodes_for(collection: @collection_name)
20
+ Solr.active_nodes_for(collection: collection_name)
29
21
  end
30
22
  end
31
23
  end
@@ -1,18 +1,8 @@
1
1
  module Solr
2
2
  module Request
3
- class LeaderNodeSelectionStrategy
4
- def self.call(collection_name)
5
- new(collection_name).call
6
- end
7
-
8
- def initialize(collection_name)
9
- @collection_name = collection_name
10
- end
11
-
3
+ class LeaderNodeSelectionStrategy < NodeSelectionStrategy
12
4
  def call
13
- return [solr_url] unless Solr.cloud_enabled?
14
-
15
- [leader_replica_node_for(collection: @collection_name)]
5
+ [leader_replica_node_for(collection: collection_name)]
16
6
  end
17
7
 
18
8
  private
@@ -0,0 +1,19 @@
1
+ module Solr
2
+ module Request
3
+ class NodeSelectionStrategy
4
+ attr_reader :collection_name
5
+
6
+ def self.call(collection_name)
7
+ new(collection_name).call
8
+ end
9
+
10
+ def initialize(collection_name)
11
+ @collection_name = collection_name
12
+ end
13
+
14
+ def call
15
+ raise "Not implemented"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,7 @@
1
+ require 'solr/request/node_selection_strategy'
1
2
  require 'solr/request/default_node_selection_strategy'
3
+ require 'solr/request/first_shard_leader_node_selection_strategy'
4
+ require 'solr/request/leader_node_selection_strategy'
2
5
  require 'solr/errors/solr_query_error'
3
6
  require 'solr/errors/solr_connection_failed_error'
4
7
  require 'solr/errors/no_active_solr_nodes_error'
data/lib/solr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solr
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.2.3'.freeze
3
3
  end
data/lib/solr.rb CHANGED
@@ -9,6 +9,7 @@ require 'solr/document'
9
9
  require 'solr/document_collection'
10
10
  require 'solr/grouped_document_collection'
11
11
  require 'solr/response'
12
+ require 'solr/request/http_request'
12
13
  require 'solr/request/runner'
13
14
  require 'solr/query/request'
14
15
  require 'solr/indexing/document'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adriano Luz
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-04-03 00:00:00.000000000 Z
13
+ date: 2019-04-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -239,6 +239,7 @@ files:
239
239
  - lib/solr/request/first_shard_leader_node_selection_strategy.rb
240
240
  - lib/solr/request/http_request.rb
241
241
  - lib/solr/request/leader_node_selection_strategy.rb
242
+ - lib/solr/request/node_selection_strategy.rb
242
243
  - lib/solr/request/runner.rb
243
244
  - lib/solr/response.rb
244
245
  - lib/solr/response/header.rb