lib/sup/index.rb in sup-0.15.1 vs lib/sup/index.rb in sup-0.15.2

- old
+ new

@@ -132,11 +132,11 @@ @enquire.docid_order = Xapian::Enquire::ASCENDING end def add_message m; sync_message m, true end def update_message m; sync_message m, true end - def update_message_state m; sync_message m, false end + def update_message_state m; sync_message m[0], false, m[1] end def save_index info "Flushing Xapian updates to disk. This may take a while..." @xapian.flush end @@ -528,22 +528,22 @@ query[:qobj] = xapian_query query[:text] = s query end - def save_message m + def save_message m, sync_back = true if @sync_worker - @sync_queue << m + @sync_queue << [m, sync_back] else - update_message_state m + update_message_state [m, sync_back] end m.clear_dirty end - def save_thread t + def save_thread t, sync_back = true t.each_dirty_message do |m| - save_message m + save_message m, sync_back end end def start_sync_worker @sync_worker = Redwood::reporting_thread('index sync') { run_sync_worker } @@ -674,13 +674,13 @@ else Q.new(Q::OP_AND_NOT, [pos_query, neg_query]) end end - def sync_message m, overwrite + def sync_message m, overwrite, sync_back = true ## TODO: we should not save the message if the sync_back failed ## since it would overwrite the location field - m.sync_back + m.sync_back if sync_back doc = synchronize { find_doc(m.id) } existed = doc != nil doc ||= Xapian::Document.new do_index_static = overwrite || !existed