Re: [documancer] Failed to lock the lock file

Arnd Baecker <arnd.baecker-S0/[email protected]> Fri, 6 Feb 2004 10:16:06 +0100 (CET)
Newsgroups gmane.text.documancer.user
Message-ID <[email protected]>
On Thu, 5 Feb 2004, Vaclav Slavik wrote:

[...]

> I have no idea what do it with it. Maybe try if a small C or Python
> app that uses advisory locks works (i.e. if it is specific to
> wxWindows).

Great - every time I have correspondence
with you I learn (or have to ;-) something new.
Alright, here we go:
The small python example below works fine on my local machine.
However, on the machine with the NFS mount stuff I get

  python lock_test.py
  Traceback (most recent call last):
    File "lock_test.py", line 26, in ?
      fcntl.flock(file.fileno(),fcntl.LOCK_SH)
  IOError: [Errno 37] No locks available

That looks pretty much like the message I got when
running documancer.
Well, I according to the sysadmin I thought locking is possible,
but maybe it is not or I am doing something wrong.

In any case I think that even if I am able to resolve
this locally (which I have some doubts right now),
the problem may in general occur for other users as well.

BTW: wouldn't a normal file just serve the same purpose
of saying "There is already a documancer instance running" ?
(But presumably I am missing something ...)

Best,

Arnd



######################################
"""
  If the lock_file exists: exit
  Otherwise: create lock_file and wait 10s.

  To test this: start this script and within the 10s try to start
                this again.

  According to the Python CookBook, 4.24, p. 152ff this
  is not cross-platform.
  (E.g. on Windows one has to use win32all)

"""

import os
import sys
import fcntl
import time

lock_file="test_lock_file.lock"

if os.path.exists(lock_file):
    print os.path.exists("test_lock_file.lock")
    print "Lock file exists - exiting"
    sys.exit(0)

file=open(lock_file,"w")
fcntl.flock(file.fileno(),fcntl.LOCK_SH)

print "Wait a while..."
time.sleep(10)

fcntl.flock(file.fileno(),fcntl.LOCK_UN)
file.close()
os.remove(lock_file)
################### EOF


-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn