[Xapian-discuss] Exception DatabaseCorruptError under php

Sebastian Araya cbimax at gmail.com
Mon Apr 21 00:33:26 BST 2008


2008/4/20 Sebastian Araya <cbimax at gmail.com>:
> Hello,
>
>
>   I'm having a litle issue with Xapian-1.0.6 with php bindings under
>  php5 when trying to add a new document it throws:
>
>  Fatal error: Uncaught exception 'Exception' with message
>  'DatabaseCorruptError: Failed to unlink
>  /var/lib/xapian/trade.ar/termlist.baseA: No such file or directory'
>  in /usr/share/php5/xapian.php:1140
>
>  Stack trace:
>   #0 /usr/share/php5/xapian.php(1140):
>  writabledatabase_add_document(Resource id #18, Object(XapianDocument))
>   #1 /home/indexer/CDetails.php(431):
>  XapianWritableDatabase->add_document(Object(XapianDocument))
>   #2 /home/indexer/CDetails.php(379): CDetails->postDetails('E',
>  '2000-01-07', '001', '-1', '4', '200BA', '225', '19059000390', '2514',
>  'michael kamen concert for saxophone', 2989378842415107)
>   #3 /home/indexer/Details.php(139): CDetails->index()
>   #4 {main}

  I've found the problem: sadly the object constructor instatiate a
XapianWritableDatabase(), and later, a clean up method removes the
files from the storage directory (/var/lib/xapian/trade.ar/).

>   Curiously, this process run seamless before for more than 16 million
>  iterations, and now stucks after a few thousand... I check for disk
>  issues (there a few hundred of gigabytes free) and swap disks, just in
>  case. This process runs alone: there aren't any other process writting
>  nor reading xapian database; and I've instantiated Xapian object using
>  xapian-bindings with:
>
>  objXapian = new XapianWritableDatabase( "/var/lib/xapian/trade.ar",
>  DB_CREATE_OR_OPEN );
>
>   Actually, /var/lib/xapian/trade.ar/ is an empty directory.

  I've remove it from the constructor and placed in a later method
which is called when the storage directory has been cleaned.

>   Where else can I check?
>
>   Thank you,
>
>
>  Sebastian
>

Sebastian



More information about the Xapian-discuss mailing list