Andreas Marienborg
2008-Jan-31 07:39 UTC
[Xapian-discuss] Exception: Couldn't read enough (EOF)
When I try to issue $db->reopen(); I sometimes (not very often, but often enough to care about it), I get the following exception in the perl wrappings: Exception: Couldn't read enough (EOF) What can cause this? Can it fail if something is commiting when I issue the call? I am currently running xapian 1.0.4 on amd64 machines, with a custom Search::Xapian (patched to catch errors in Enquire.xs) if I can provide anything else, just ask :) - andreas
On Thu, Jan 31, 2008 at 08:39:42AM +0100, Andreas Marienborg wrote:> When I try to issue $db->reopen(); I sometimes (not very often, but > often enough to care about it), I get the following exception in the > perl wrappings: > > Exception: Couldn't read enough (EOF) > > What can cause this?A bug!> Can it fail if something is commiting when I issue the call?I think this is probably the case. We write the new base file in place so if you open or call reopen() on a database in the middle of this, then it can probably fail like this. This explanation could be wrong, as the low level routine which throws that exception is called from a number of places, but it looks like there's a potential issue here, even if you aren't hitting it. Are you on a multicore/multiprocessor machine? That might make this more likely to manifest.> I am currently running xapian 1.0.4 on amd64 machines, with a custom > Search::Xapian (patched to catch errors in Enquire.xs) > > if I can provide anything else, just ask :)I think I need to write a patch and get you to test it. As a workaround, catching the exception and simply retrying reopen() should do the trick. Cheers, Olly