On Mon, Aug 28, 2006 at 01:20:29AM -0700, David Ranney wrote:
> Jens,
> 
> Thanks for your response. I see errors in either the importer (batch)  
> script or in the web app. The traces I happened to post previously  
> were both from the batch script. Here are the relevant lines from a  
> typical error found in the rails app's error log.
> 
> -Dave
> 
> ActionView::TemplateError (Lock Error occured at <except.c>:79 in xraise
> Error occured in index.c:3089 - ir_is_latest
>          Error trying to commit the index. Commit lock already obtained

ok, it seems that the check to see if the current IndexReader is based on 
the latest version of the Ferret index wants to obtain a write lock and
fails, since the batch indexing job already has locked it. 

This check is done by the Ferret::Index::Index class before every
search. Maybe Dave could shed some light on how to handle these errors ?
Imho Ferret should retry some more times to obtain a lock before failing
that way. 

As a short term fix, one could catch the lock error in 
Ferret::Index::Index#ensure_reader_open and continue as if index_reader.latest?
had returned true. That would prevent the search from failure due to
a locked index. 

In the opposite direction, i.e. if latest? grabbed the lock and the
indexing failed, a simple retry (calling record.save another time) could
solve the problem, too.

Jens


-- 
webit! Gesellschaft für neue Medien mbH          www.webit.de
Dipl.-Wirtschaftsingenieur Jens Krämer       [EMAIL PROTECTED]
Schnorrstraße 76                         Tel +49 351 46766  0
D-01069 Dresden                          Fax +49 351 46766 66
_______________________________________________
Ferret-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ferret-talk

Reply via email to