[Xapian-discuss] xapian-tcpsrv php in real fastcgi loop

Olly Betts olly at survex.com
Sat Mar 20 14:31:37 GMT 2010


On Fri, Mar 19, 2010 at 07:25:35PM +0100, Martin Regner wrote:
> First, this is a connection tried to open with Xapian::remote_open. So i
> think it should'nt create a write lock. Otherwise, i started xapian-tcpsrv
> with -- writable, do i have to start to instances on the same directory, one
> writable and one not?

Yes, you do for Xapian 1.0.x.

Xapian 1.1.0 fixed this:

http://trac.xapian.org/ticket/145

> Second, if i understand the examples right i have to unset the database
> object to get the lock released. But i don't want to close the connection. I
> Just want to release the lock if possible. Is there any convenient way to let
> any lock go if everything is done in a process?

Again, not in 1.0.x.  It can be a problem as it is quite easy to inadvertently
keep a reference to the database (either through another Xapian object, or
with some scripting languages because there's a garbage collection phase which
needs to run before the C++ destructor actually gets called).

1.1.0 added a Database::close() method to close a database right away, and
release any lock and close any network connections.

> Third, if there is a lock why is there a exception thrown? Wouldn't it be
> better to wait for the lock a well defined time similar to database locks for
> example?

Sometimes you don't want to wait, but it would be useful to be able to specify
that you want the attempt to block until it can get a write lock.  There's
already an open ticket for this:

http://trac.xapian.org/ticket/275

Cheers,
    Olly



More information about the Xapian-discuss mailing list