Have you tried using lsof to report what is holding your file open?

Can you copy the file?

Max Barry wrote:
Christian Smith wrote:

Max Barry uttered:

   My database is permanently locked, and I've spent two fruitless days
   trying to unlock it.

You haven't said what sort of box this is. I guess a generic Unix. If Linux, 
you'll probably have fuser installed. Run fuser against the database file, and 
it'll tell you the PID of any process that has the file open. I'm not sure if 
other Unix have fuser installed by default.


Sorry, yes: it's a Linux box with a 2.4.32 kernel.


If the file is owned by a trac processs, you can kill it using "fuser -k", 
assuming you have permission.


Unfortunately fuser doesn't show any process holding a lock, and I've
already tried killing every process I have permission to.

I suspect that fuser might not show me the answer because I'm non-root.
Certainly ps, top, etc, only show processes I own. I've asked the box
owner to run 'fuser' for me and see if that shows something.

drh wrote:

Is the database on an NFS filesystem.  The locking is busted
on some (many?) implementations of NFS, resulting in behavior
like shown above.


Yep, it's NFS. The line from /etc/fstab is:

10.3.100.108:/vol/boot/spunky/maitland  /home/.maitland nfs
defaults,intr,vers=3,bg,rsize=8192,wsize=8192   0 0


Your work-around is to copy the database to a local filesystem
that actually supports posix advisory locks.


Ah. Except I don't think I can do that, because I don't have root on
this box.

I discovered I could make a copy of the trac.db file and edit my
trac.ini file to make point to that instead ("database =
sqlite:db/trac2.db"). Ta da, no more lock! So at least my site is usable
again.

But it sounds like this will happen again with my current configuration.
Is there anything I can do as non-root, or do I need to just be prepared
for lots of db copying?

Thanks very much to drh and Christian for the fast replies!

Max.


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------



-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to