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