Class: RSolr::Cloud::Connection

Inherits:
RSolr::Connection
  • Object
show all
Includes:
MonitorMixin
Defined in:
lib/rsolr/cloud/connection.rb

Overview

RSolr connection adapter for SolrCloud

Constant Summary collapse

ZNODE_LIVE_NODES =
'/live_nodes'.freeze
ZNODE_CLUSTER_PROPS =
'/clusterprops.json'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(zk, options = {}) ⇒ Connection

Returns a new instance of Connection.



10
11
12
13
14
15
16
# File 'lib/rsolr/cloud/connection.rb', line 10

def initialize(zk, options = {})
  super()
  @zk = zk
  @options = options
  init_url_scheme
  init_live_node_watcher
end

Instance Method Details

#execute(client, request_context) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rsolr/cloud/connection.rb', line 18

def execute(client, request_context)
  collection_name = request_context[:collection]
  raise 'The :collection option must be specified.' unless collection_name
  path  = request_context[:path].to_s
  query = request_context[:query]
  query = query ? "?#{query}" : ''
  url   = select_node(collection_name)
  raise RSolr::Cloud::Error::NotEnoughNodes unless url
  request_context[:uri] = RSolr::Uri.create(url).merge(path + query)
  super(client, request_context)
end