Changeset 328
- Timestamp:
- 05/08/08 04:43:08 (7 months ago)
- Files:
-
- trunk/History.txt (modified) (1 diff)
- trunk/lib/picolena/templates/app/controllers/documents_controller.rb (modified) (1 diff)
- trunk/lib/picolena/templates/app/models/finder.rb (modified) (3 diffs)
- trunk/lib/picolena/templates/app/models/indexer.rb (modified) (8 diffs)
- trunk/lib/picolena/templates/config/initializers/002_load_indexed_dirs.rb (modified) (1 diff)
- trunk/lib/picolena/templates/spec/models/basic_finder_spec.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/History.txt
r303 r328 1 == 0.1.8 2008-05- 1 == 0.1.8 2008-05-08 2 3 * 1 bug fix: 4 * Ensure that index is locked system-wide by using lock file. 2 5 3 6 == 0.1.7 2008-04-30 trunk/lib/picolena/templates/app/controllers/documents_controller.rb
r314 r328 65 65 def ensure_index_is_created 66 66 Indexer.ensure_index_existence 67 while Indexer. do_not_disturb_while_indexingdo67 while Indexer.locked? do 68 68 sleep 1 69 69 end trunk/lib/picolena/templates/app/models/finder.rb
r327 r328 3 3 4 4 def index 5 Indexer.index5 @@index ||= Indexer.index 6 6 end 7 7 … … 11 11 Indexer.ensure_index_existence 12 12 reload_index! if should_be_reloaded? 13 uncache_index if Indexer.do_not_disturb_while_indexing14 13 @per_page=results_per_page 15 14 @offset=(page.to_i-1)*results_per_page … … 59 58 def reload_index! 60 59 Indexer.close 61 uncache_index60 @@index = nil 62 61 @@last_reload = Time.now 63 end64 65 def uncache_index66 @@index = nil67 62 end 68 63 trunk/lib/picolena/templates/app/models/indexer.rb
r327 r328 9 9 # Number of threads that will be used during indexing process 10 10 @@threads_number = 8 11 12 cattr_reader :do_not_disturb_while_indexing13 11 14 12 class << self … … 19 17 # case it removes the index first before re-creating it. 20 18 def index_every_directory(remove_first=false) 21 @@do_not_disturb_while_indexing=true22 19 clear! if remove_first 20 lock! 23 21 @from_scratch = remove_first 24 22 logger.start_indexing … … 29 27 index.optimize 30 28 index_time_dbm_file['last']=Time.now._dump 31 # Forces Finder.index to be reloaded. 32 @@do_not_disturb_while_indexing=false 33 touch_reload_file! 29 unlock! 34 30 logger.show_report 35 31 end … … 40 36 def index_directory_with_multithreads(dir) 41 37 logger.debug "Indexing #{dir}, #{@@threads_number} threads" 42 43 38 indexing_list=Dir[File.join(dir,"**/*")].select{|filename| 44 39 File.file?(filename) && filename !~ @@exclude … … 46 41 47 42 indexing_list_chunks=indexing_list.in_transposed_slices(@@threads_number) 48 49 43 prepare_multi_threads_environment 50 44 51 45 indexing_list_chunks.each_with_thread{|chunk| 52 46 chunk.each{|complete_path| … … 144 138 @from_scratch || !last_itime || File.mtime(complete_path)> Time._load(last_itime) 145 139 end 140 141 def locked? 142 File.exists?(lock_file) 143 end 146 144 147 145 private … … 155 153 156 154 def reload_file 157 File.join(Picolena::IndexSavePath,'reload') 155 File.join(Picolena::MetaIndexPath,'reload') 156 end 157 158 def lock! 159 FileUtils.touch(lock_file) 160 end 161 162 def unlock! 163 FileUtils.rm(lock_file) 164 # Forces Finder.index to be reloaded. 165 touch_reload_file! 166 end 167 168 def lock_file 169 File.join(Picolena::MetaIndexPath,'lock') 158 170 end 159 171 … … 164 176 # Copied from Ferret book, By David Balmain 165 177 def index_time_dbm_file 166 @@dbm_file ||= DBM.open(File.join(Picolena:: IndexSavePath, 'added_at'))178 @@dbm_file ||= DBM.open(File.join(Picolena::MetaIndexPath, 'added_at')) 167 179 end 168 180 trunk/lib/picolena/templates/config/initializers/002_load_indexed_dirs.rb
r315 r328 9 9 IndexSavePath=File.join(IndexesSavePath,ENV["RAILS_ENV"] || "development") 10 10 FileUtils.mkpath IndexSavePath 11 MetaIndexPath= File.join(IndexSavePath,'meta') 12 FileUtils.mkpath MetaIndexPath 11 13 end trunk/lib/picolena/templates/spec/models/basic_finder_spec.rb
r325 r328 8 8 @new_index_path=File.join(Dir::tmpdir,'ferret_tst') 9 9 Picolena::IndexSavePath.replace(@new_index_path) 10 Picolena::MetaIndexPath.replace(File.join(@new_index_path,'meta')) 11 FileUtils.mkpath Picolena::MetaIndexPath 10 12 end 11 13 … … 31 33 Picolena::IndexedDirectories.replace(@original_indexed_dirs) 32 34 Picolena::IndexSavePath.replace(@original_index_path) 35 Picolena::MetaIndexPath.replace(File.join(@original_index_path,'meta')) 33 36 end 34 37 end
