Rails 4: RSolr::Error::Http (RSolr::Error::Http - 404 Not Found
Asked Answered
P

3

9

I am in the process of upgrading my app to Rails 4, and now got my rails server, as well as sunspot solr, after a lot of tinkering, to run, I can access Solr admin page. However when I try to access solr from my rails development app to do search or index, I get the following error

RSolr::Error::Http (RSolr::Error::Http - 404 Not Found
Error:     Not Found

Request Data: "fq=type%3AMatch&fq=date_in_utc_d%3A%7B2013%5C-11%5C-29T21%5C%3A00%5C%3A00Z+TO+%2A%7D&fq=approval__s%3AAPPROVED&sort=date_d+asc&q=london&fl=%2A+score&qf=caption_text%5E10+city_name_text%5E10+team_name_text%5E10+&defType=edismax&start=0&rows=30"

Backtrace: /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:268:in `adapt_response'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:175:in `execute'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:161:in `send_and_receive'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot_rails-2.1.0/lib/sunspot/rails/solr_instrumentation.rb:16:in `block in send_and_receive_with_as_instrumentation'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications.rb:159:in `block in instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications.rb:159:in `instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot_rails-2.1.0/lib/sunspot/rails/solr_instrumentation.rb:15:in `send_and_receive_with_as_instrumentation'
(eval):2:in `post'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot-2.1.0/lib/sunspot/search/abstract_search.rb:45:in `execute'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot-2.1.0/lib/sunspot/session.rb:59:in `search'):
  <a href="txmt://open?url=file:///Users/bashar/rails-projects/myapp/app/models/match.rb&amp;line=474&amp;column=1">app/models/match.rb:474:in `upcoming_games'</a>
  <a href="txmt://open?url=file:///Users/bashar/rails-projects/myapp/app/controllers/tickets_controller.rb&amp;line=34&amp;column=1">app/controllers/tickets_controller.rb:34:in `search'</a>


  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.4ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (17.3ms)

This is the sunspot.yml file.

production:
  solr:
    hostname: ENV['WEBSOLR_URL']
    port: 80
    log_level: WARNING
    path: /solr/production
    # read_timeout: 2
    # open_timeout: 0.5
development:
  solr:
    hostname: 192.168.0.11
    port: 8981
    log_level: INFO
    path: /solr/development
test:
  solr:
    hostname: localhost
    port: 8981
    log_level: WARNING
    path: /solr/test

I verified solr is data is in the right path. I know there are similar posts, but their solutions didn't work. I tried to comment path:, or use /solr/default, or just /solr, or use the ip instead of localhost to no avail

Any idea? Tips on how I can see where the rails suntspot solr request is trying to reach?

Pompei answered 30/11, 2013 at 18:42 Comment(6)
I've seen this before when it comes to upgrading versions of things and getting out of sync. Try removing the path options from the sunspot.yml. You could always open the gem at the line of the error, and debug it.Sherr
I also have the same problem. Nothing has worked so far.Talky
@Sherr I've already tried to remove the path with no luck. Looks like it's debug mode.Pompei
@climber247 just to be sure we're having same problem, my sunspot-solr-development.log file is clear of errors. During upgrade to Solr 1.4 you need to update some config files.Pompei
There are warnings but no errors. Your solution didn't work for me. :(Talky
I'd be glad to try to help. But it's better then you start a new thread unless it's closely related. What are you getting?Pompei
P
14

Solved it! Followed steps in Answer suggested here with little alteration:

  1. stopping all running solr processes
  2. removing the solr folder BUT keep a copy of it accessible in case you need some of the old config, synonyms and such.
  3. gem uninstall all related gems
  4. bundle install
  5. rails generate sunspot_rails:install
  6. start solr
  7. reindex solr: Now as I'm using mongoid, rake sunspot:reindex doesn't seem to work, but going from console and doing Sunspot.index!(Model.all) is doing it for me.
Pompei answered 3/12, 2013 at 8:32 Comment(2)
Uninstalling the gems is key here - I did all the other steps, but that is what really fixed the issue. Thanks!Semblable
@Semblable glad it helped someone, and thanks for clarifying further.Pompei
M
10

My fix for this problem is: Comment the path parameter(default configuration) at config/sunspot.yml configuration file.

Default was: #path: /solr/development.

After this,

  • Stop all processes of solr by,

    ps aux | grep 'solr' 
    kill PROCESS_ID
    
  • Remove "solr" folder which was inside at your application directory.

    rm -rf solr
    

This will remove your previous configurations.

  • Then, rake sunspot:solr:start

  • After starting solr server then again try for reindex,

        rake sunspot:reindex
    

Issue should be resolved.

I have used the sunspot solr full text search for one of my project, where I have resolved the above mentioned issue.

e.g. reference link - http://moreaboutsports.com/

Mientao answered 16/6, 2014 at 13:40 Comment(1)
Thank you very much. It works for me. I think it is because of wrong file permissions in project. I work on temporary server, and there is I always have problems with permissions.Rafiq
T
1

The problem I had was the gem was trying to use its own gem directory for the Jetty tempDirectory, and of course it didn't have write permissions, so the server never started. It would appear to launch in the background, but it wasn't really running. When trying to run it in the foreground rake sunspot:solr:run, it would show some of the error, but I still had to track it down to the config file in the gem. You have to edit the gem config to fix it. I added an issue to GitHub:

https://github.com/sunspot/sunspot/issues/561

The problem is sunspot_solr-2.1.0/bin/contexts/solr.xml file. You have to set the tempDirectory to something with write permissions, like /tmp, instead of '.', the gem directory.

If you are still having trouble with launching Solr try deleting the tmp directory and re-starting the server. I had a strange situation where it was pointing to the /tmp directory and was working, but when I restarted the server, it kept giving me 404 errors! Somehow all the files were deleted that it depends on! Since the directory still existed, it didn't re-copy the WAR and expand it. If you delete the tmp directory, then it will re-copy and re-expand the WAR.

ls /tmp/solr-webapp/

This is in addition to editing the /usr/local/rvm/gems/ruby-2.0.0-p247.../gems/sunspot_solr-2.1.0/solr/contexts/solr.xml file of course.

Trantrance answered 19/3, 2014 at 1:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.