Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better SolrCloud support (allow the :url option to be an array of URLs). #138

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

heaven
Copy link

@heaven heaven commented Jul 8, 2016

So with a SolrCloud cluster it will now be possible to reboot/shut down some nodes with zero downtime for the search service.

The algorithm is quite simple, here's an example with 3 URLs in config:

(request 1)

  • RSolr sends a request
  • URL1 is selected
  • request failed
  • URL1 is blacklisted, URL2 selected
  • Rsolr retries the request
  • request failed
  • URL2 is blacklisted, URL3 selected
  • Rsolr retries the request
  • request failed
  • the ConnectionRefused error is raised
  • the list of blacklisted URLs if cleared

(request 2)

  • RSolr sends a request
  • URL1 is selected
  • request failed
  • URL1 is blacklisted, URL2 selected
  • Rsolr retries the request
  • request succeeded
  • the list of blacklisted URLs if cleared

(request 3)

  • RSolr sends a request
  • URL2 is selected
  • request failed
  • URL2 is blacklisted, URL1 selected
  • Rsolr retries the request
  • request failed
  • URL1 is blacklisted, URL3 selected
  • Rsolr retries the request
  • request succeeded
  • the list of blacklisted URLs if cleared

So with a SolrCloud cluster it will now be possible to reboot/shut down some nodes with zero downtime for the search service.

The algorithm is quite simple, here's an example with 3 URLs in config:
* RSolr sends a request
* URL1 is selected
* request failed
* URL1 is blacklisted, URL2 selected
* Rsolr retries the request
* request failed
* URL2 is blacklisted, URL3 selected
* Rsolr retries the request
* request failed
* the ConnectionRefused error is raised
* the list of blacklisted URLs if cleared

* RSolr sends a request
* URL1 is selected
* request failed
* URL1 is blacklisted, URL2 selected
* Rsolr retries the request
* request succeeded
* the list of blacklisted URLs if cleared

* RSolr sends a request
* URL2 is selected
* request failed
* URL2 is blacklisted, URL1 selected
* Rsolr retries the request
* request failed
* URL1 is blacklisted, URL3 selected
* Rsolr retries the request
* request succeeded
* the list of blacklisted URLs if cleared
* set Solr version to 5.5.2 (6.1.0 is in beta and requires Java 1.8)
* set activesupport version to < 5.0.0 (Rails 5 already released and requires ruby >= 2.2.2)
@rohanpujaris
Copy link

@heaven Any idea when this would be merged?

@heaven
Copy link
Author

heaven commented Dec 29, 2017

@rohanpujaris not sure this is going to be merged at all, we're using a fork.

@rohanpujaris
Copy link

@heaven Can you please point me to the fork?

@heaven
Copy link
Author

heaven commented Jan 3, 2018

Sure:

gem 'rsolr', :git => 'git://github.com/heaven/rsolr'

Might leak some fixes as I didn't sync with the upstream for a while.

UPD. If you use Sunspot you will also have to use this fork:

gem 'sunspot', :git => 'git://github.com/heaven/sunspot'
gem 'sunspot_rails', :git => 'git://github.com/heaven/sunspot'

Because there is a pending pull request to Sunspot (it is not yet merged because of this missing feature in RSolr).

@rohanpujaris
Copy link

rohanpujaris commented Jan 17, 2018

@heaven Thanks!
I created a fork out of your work and synced it with the upstream -> https://github.com/kiprosh/rsolr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants