[Xapian-discuss] another DatabaseModifiedError issue

Markus Wörle mrks at mrks.de
Wed May 28 10:33:39 BST 2008


Hello,

I use xapian-core-1.0.6 with the corresponding perl bindings. I run a  
1 writer/N reader setup on 5 databases, that is the writer as well as  
each reader holds 5 open db handles at a time. Since I use the perl- 
bindings and am therefore not able to catch a DatabaseModifiedError, I  
do reopen() a database-handle before every query.

Nevertheless I casually get  DatabaseModifiedErrors.

They occur, if my writer (manually) flush()es two databases with  
little cached changes consecutively while having high load on the  
searchers.

I know that DatabaseModifiedErrors get thrown if a database version  
get incremented at least two times while a search is running. In fact  
there *are* two very fast db updates in this case, and there *are*  
queries that might easily exceed the runtime of those updates. But my  
updates are on different databases.

It feels to me, like my reader processes mixing up the version  
information of the different databases or something like that?

My workaround does a 1-second sleep() after each (manual) flush(),  
which gives the readers enough time to finish before the next flush()  
occurs. This works.

Unfortunately, I was not able to reproduce the issue with a simple  
test-case so far, but i think that in fact there has to be a bug in  
xapian to display this behaviour? Or is it a misunderstanding by me  
concerning database versions?

Any ideas?

Regards,
mrks



More information about the Xapian-discuss mailing list