Commit df397df08eff0ca190a49386e05adbc2068ed51b

Authored by Rafael Martins
1 parent e305aa61

Remove timeout and fix solr:reindex

config/solr.yml.dist
... ... @@ -6,14 +6,17 @@
6 6 development:
7 7 url: http://0.0.0.0:8982/solr
8 8 jvm_options: -server -Xmx128M -Xms16M
  9 + timeout: 0
9 10  
10 11 production:
11 12 url: http://127.0.0.1:8983/solr
12 13 jvm_options: -server -Xmx192M -Xms64M
  14 + timeout: 0
13 15  
14 16 test: &TEST
15 17 url: http://0.0.0.0:8981/solr
16 18 jvm_options: -server -Xmx128M -Xms16M
  19 + timeout: 0
17 20  
18 21 cucumber:
19 22 <<: *TEST
... ...
vendor/plugins/acts_as_solr_reloaded/lib/acts_as_solr.rb
... ... @@ -24,19 +24,22 @@ module ActsAsSolr
24 24 class Post
25 25 class << self
26 26 def config
27   - @config ||= YAML::load_file("#{Rails.root}/config/solr.yml")[Rails.env]
  27 + return @config if @config
  28 + @config = {}
  29 + YAML::load_file("#{Rails.root}/config/solr.yml")[Rails.env].each{ |k,v| @config[k.to_sym] = v }
  30 + @config
28 31 end
29 32  
30 33 def options
31   - @options ||= credentials.merge( :timeout => config['timeout'] )
  34 + @options ||= credentials.merge config
32 35 end
33 36  
34 37 def credentials
35   - @credentials ||= {:username => config['username'], :password => config['password']}
  38 + @credentials ||= {:username => config[:username], :password => config[:password]}
36 39 end
37 40  
38 41 def url(core)
39   - core.nil? ? config['url'] : "#{config['url']}/#{core}"
  42 + core.nil? ? config[:url] : "#{config[:url]}/#{core}"
40 43 end
41 44  
42 45 def execute(request, core = nil)
... ...
vendor/plugins/acts_as_solr_reloaded/lib/acts_as_solr/acts_methods.rb
  1 +# a list of models which called acts_as_solr
  2 +$solr_indexed_models = []
  3 +
1 4 module ActsAsSolr #:nodoc:
2 5  
3 6 module ActsMethods
... ... @@ -165,6 +168,8 @@ module ActsAsSolr #:nodoc:
165 168 # spatial: Default false. When true, indexes model.local.latitude and model.local.longitude as coordinates.
166 169 def acts_as_solr(options={}, solr_options={}, &deferred_solr_configuration)
167 170  
  171 + $solr_indexed_models << self
  172 +
168 173 extend ClassMethods
169 174 include InstanceMethods
170 175 include CommonMethods
... ... @@ -370,4 +375,5 @@ module ActsAsSolr #:nodoc:
370 375 end
371 376 end
372 377 end
373   -end
374 378 \ No newline at end of file
  379 +end
  380 +
... ...
vendor/plugins/acts_as_solr_reloaded/lib/acts_as_solr/class_methods.rb
... ... @@ -209,14 +209,15 @@ module ActsAsSolr #:nodoc:
209 209 # If a finder block is given, it will be called to retrieve the items to index.
210 210 # This can be very useful for things such as updating based on conditions or
211 211 # using eager loading for indexed associations.
212   - def rebuild_solr_index(batch_size=100, &finder)
  212 + def rebuild_solr_index(batch_size=100, options = {}, &finder)
213 213 finder ||= lambda { |ar, options| ar.find(:all, options.merge({:order => self.primary_key})) }
214 214 start_time = Time.now
  215 + options[:offset] ||= 0
215 216  
216 217 if batch_size > 0
217 218 items_processed = 0
218 219 limit = batch_size
219   - offset = 0
  220 + offset = options[:offset]
220 221 begin
221 222 iteration_start = Time.now
222 223 items = finder.call(self, {:limit => limit, :offset => offset})
... ...
vendor/plugins/acts_as_solr_reloaded/lib/tasks/solr.rake
... ... @@ -111,20 +111,15 @@ namespace :solr do
111 111 task :reindex => :environment do
112 112 require File.expand_path("#{File.dirname(__FILE__)}/../../config/solr_environment")
113 113  
114   - includes = env_array_to_constants('ONLY')
115   - if includes.empty?
116   - includes = Dir.glob("#{RAILS_ROOT}/app/models/*.rb").map { |path| File.basename(path, ".rb").camelize.constantize }
117   - end
118   - excludes = env_array_to_constants('EXCEPT')
119   - includes -= excludes
120   -
121   - optimize = env_to_bool('OPTIMIZE', true)
122   - start_server = env_to_bool('START_SERVER', false)
123   - clear_first = env_to_bool('CLEAR', true)
124   - batch_size = ENV['BATCH'].to_i.nonzero? || 300
125   - debug_output = env_to_bool("DEBUG", false)
  114 + optimize = env_to_bool('OPTIMIZE', true)
  115 + start_server = env_to_bool('START_SERVER', false)
  116 + offset = ENV['OFFSET'].to_i.nonzero? || 0
  117 + clear_first = env_to_bool('CLEAR', offset == 0)
  118 + batch_size = ENV['BATCH'].to_i.nonzero? || 300
  119 + debug_output = env_to_bool("DEBUG", false)
126 120  
127   - RAILS_DEFAULT_LOGGER.level = ActiveSupport::BufferedLogger::INFO unless debug_output
  121 + logger = ActiveRecord::Base.logger = Logger.new(STDOUT)
  122 + logger.level = ActiveSupport::BufferedLogger::INFO unless debug_output
128 123  
129 124 if start_server
130 125 puts "Starting Solr server..."
... ... @@ -138,37 +133,26 @@ namespace :solr do
138 133 alias_method :solr_optimize, :blank
139 134 end
140 135  
141   - models = includes.select { |m| m.respond_to?(:rebuild_solr_index) }
142   - models.each do |model|
  136 + $solr_indexed_models.each do |model|
143 137  
144 138 if clear_first
145 139 puts "Clearing index for #{model}..."
146   - ActsAsSolr::Post.execute(Solr::Request::Delete.new(:query => "#{model.solr_configuration[:type_field]}:#{model}"))
147   - ActsAsSolr::Post.execute(Solr::Request::Commit.new)
  140 + #ActsAsSolr::Post.execute(Solr::Request::Delete.new(:query => "#{model.solr_configuration[:type_field]}:#{model}"))
  141 + #ActsAsSolr::Post.execute(Solr::Request::Commit.new)
148 142 end
149 143  
150 144 puts "Rebuilding index for #{model}..."
151   - model.rebuild_solr_index(batch_size)
  145 + model.rebuild_solr_index batch_size, :offset => offset
152 146  
153 147 end
154 148  
155   - if models.empty?
  149 + if $solr_indexed_models.empty?
156 150 puts "There were no models to reindex."
157 151 elsif optimize
158 152 puts "Optimizing..."
159 153 models.last.deferred_solr_optimize
160 154 end
161 155  
162   - if start_server
163   - puts "Shutting down Solr server..."
164   - Rake::Task["solr:stop"].invoke
165   - end
166   -
167   - end
168   -
169   - def env_array_to_constants(env)
170   - env = ENV[env] || ''
171   - env.split(/\s*,\s*/).map { |m| m.singularize.camelize.constantize }.uniq
172 156 end
173 157  
174 158 def env_to_bool(env, default)
... ...