[Xapian-discuss] xapian-tcpsrv throws "Error reading block"
exceptions
Rocco Caputo
rcaputo at pobox.com
Mon Jun 19 15:56:53 BST 2006
On Jun 18, 2006, at 17:39, Olly Betts wrote:
> On Sat, Jun 17, 2006 at 01:13:58AM -0400, Rocco Caputo wrote:
>> It seems to be coming from both the flint and quartz backends.
>
> They currently share a lot of code, so that's not too suprising.
> Or maybe it's the remote backend.
>
>> I switched from flint to quartz and partly rebuild the database from
>> scratch. The error persists:
>>
>> Exception: REMOTE:Error reading block 184743170: got end of file at
>> Search.pm line 281.
>> Exception: REMOTE:Error reading block 4050387271: File too large at
>> Search.pm line 281.
> Did you try my -fno-strict-aliasing suggestion? Check if the perl
> bindings are built with it, and if not make sure they are!
Yes. I verified that Perl is adding -fno-strict-aliasing.
> Other things to try:
>
> * Run quartzcheck on the quartz database to see if it finds any
> corruption.
>
> * Run xapian-tcpsrv under valgrind to see if it can find anything
> untoward going on.
Currently there isn't a quartz version of the database. I switched
back to flint after verifying the quartz backend behaved the same.
The problem seems to be related to sharing a single open database
across multiple child processes. Adding a db.reopen() call to the
start of TcpServer::run_once() seems to have resolved the exception.
I've been running ten concurrent clients overnight, and none of the
1,355,000 queries have encountered the "Error reading block ###"
exception.
The remaining exceptions are sensible and recoverable: can't connect,
no response from remote end, revision being read has been discarded.
My test client has retried about 8650 of them so far.
--
Rocco Caputo - rcaputo at pobox.com
More information about the Xapian-discuss
mailing list