Subject: [sup-talk] sup 0.8.1 crash

From: [email-masked] (Jonathan Lassoff)
Date: Tue, 07 Jul 2009 01:20:51 -0700

Yikes! I found a way to crash my sup!

I'm running sup 0.8.1 (sourced from whatever's current on rubygems.org, not a git branch), and can get sup to crash on specific searches.

I took a little time to poke around in the sup source to try and get an idea what was going on. I'm led to believe this is because I added a source in the past that I later deleted -- but all of the mesages are still in the index. So, when certain searches turn up results that are in that deleted source, the sup index fails to reference the message source in Redwood::Index. Is there a way to delete a source without having to re-index everything?

So, I figured I might find a way to search the index for any documents whose source id is the same as the deleted one and remove them from the index, but am having a hard time finding a way to iterate over all documents in the index (no search query). Is there a simple way to iterate over all messages?

Here's some example crash output:

--- RuntimeError from thread: load threads for thread-index-mode
invalid source 1
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:403:in `build_message'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:399:in `build_message'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:297:in `each_id_by_date'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/thread.rb:330:in `call'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/thread.rb:330:in `load_n_threads'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:297:in `each_id_by_date'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:296:in `each'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/index.rb:296:in `each_id_by_date'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/thread.rb:326:in `load_n_threads'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/modes/thread-index-mode.rb:620:in `__unprotected_load_n_threads'
(eval):12:in `load_n_threads'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/modes/thread-index-mode.rb:604:in `load_n_threads_background'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup.rb:71:in `reporting_thread'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup.rb:69:in `initialize'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup.rb:69:in `new'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup.rb:69:in `reporting_thread'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/modes/thread-index-mode.rb:603:in `load_n_threads_background'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/modes/thread-index-mode.rb:673:in `__unprotected_load_threads'
(eval):12:in `load_threads'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/lib/sup/modes/search-results-mode.rb:34:in `spawn_from_query'
/usr/lib/ruby/gems/1.8/gems/sup-0.8.1/bin/sup:270
/usr/bin/sup:19:in `load'
/usr/bin/sup:19

Thanks,
jonathan

---

From: [email-masked] (William Morgan)
Date: Mon, 27 Jul 2009 10:16:02 -0700

Reformatted excerpts from Jonathan Lassoff's message of 2009-07-07:
> I took a little time to poke around in the sup source to try and get
> an idea what was going on. I'm led to believe this is because I added
> a source in the past that I later deleted -- but all of the mesages
> are still in the index.

That would do it!

> So, when certain searches turn up results that are in that deleted
> source, the sup index fails to reference the message source in
> Redwood::Index. Is there a way to delete a source without having to
> re-index everything?

Yes, using devel/console.sh. Are you running master or next? (Or a
release?) Details differ depending.
-- 
William <wmorgan-sup at masanjin.net>