[Samba] Dangling MS Access DB Lock Files *.ldb
dkrnic at lycos.com
Mon Oct 10 15:21:15 GMT 2005
I have an intermittent problem with dangling MS Access DB lock files.
In a productive environment with N batch queus (each on a separate
Windows XP Professional) a scheduler PC dispatches the work load to
a free queue by means of modifying a simple MS Access DB file
called "PRIM.mdb", which resides on a Samba 3.0.20 share. Each free
queue PC polls the same MS Access DB file every 60 seconds to see
if there is a work packet to be executed by it. If there is a work
package for it it modifies a state value of the respective work packet
in this DB when it starts executing it as well as after the job has
been done so that the scheduler knows what's going on.
As I understand the MS Access API a client creates a lock file
"PRIM.ldb" whenever it wishes to modify the DB file "PRIM.mdb".
>From time to time, but generally not very often, a lock file is
dropped by either a queue PC or by scheduler. Therefore no one
can modify the DB file until the lock file is removed.
The linux utility "lsof" can't see that the lock file is opened
by any process but the status page of SWAT always lists it under
"Open Files" with the smbd PID of the client which last opened
it, with "Sharing" declared "DENY_NONE", "R/W" as "RDWR", "Oplock"
is "NONE" (oplocks=no), full path name under "File" and the
timestamp of the last access under "Date".
The lock file can only be removed by super user root but if the
smbd process which holds it open is killed, then the problem is
also solved sometimes even without removing the lock file itself.
I have inspected the samba log files and identified the point at
which this happens recently. To make things simpler I've removed
much of the samba verbosity in the following overview of the
offending client's actions (mdb is the MS Access DB file and
ldb is the respective lock file):
23:55:53 close mdb 1
close ldb 0
23:55:54 open ldb ro 1
open mdb rw 2
open ldb rw 3
23:55:55 close mdb 1
Share violation on PRIM.mdb, flags=2
open mdb rw 2
No other client was active at the time so there is no racing
here. Only the offending client loses track of the lock file
and forgets about it.
Has anyone had a similar problem and lived to talk about it?
More information about the samba