Hi,
Background Info -
1. Using Linux kernel v2.4.21 on both machines.
2. Scenario in which this problem occurs - when I rlogin/rsh to another
machine and then run the app
calls to sqlite3_open() work successfully
calls to sqlite3_exec() return 'database is locked' error message
3. This problem does not occur if I run the app on my local machine.
---------------------------------
I've debugged this issue and found that the problem lies with fcntl()
returning a failure (i.e. -1) which causes sqlite3 functions to return
"database is locked" error.
The fcntl() calls which return -1 are of this type -
fcntl64(5, F_SETLK64, {type=F_RDLCK, whence=SEEK_SET, start=1073741824,
len=1}, 0xbfffe4f0)
I think its safe to assume that the use of F_SETLK64 causes the fcntl()
fn to fail.
Is there a solution to this without changing the NFS settings. Maybe if
I modify the fcntl() calls in sqlite source code so that instead of
F_SETLK64 I pass some other command. I've tried passing F_SETLKW64 but
that reproduces the problem again.
I also tried another option in os_unix.c file which sqlite uses for
DJGPP in which the fcntl() is re-defined as -
#define fcntl(A,B,C) 0
but this gives another error message related to OS not able support
large file formats.
Could you please suggest some other alternative(s) except for
reconfiguring NFS server - this is something we just can't do. Thanks
for your help.
Regards,
Ritesh
On Mon, 2006-01-30 at 19:31, [EMAIL PROTECTED] wrote:
> Ritesh Kapoor <[EMAIL PROTECTED]> wrote:
> > Yes.
> > My machine has NFS and the machines I log onto also have NFS. But if
> > this is the problem then why dosen't it appear on my machine when I run
> > the app.
>
> Perhaps you are using a local filesystem when you run on
> your machine. Or perhaps NFS is configured properly on
> your machine but not on the other machines.
>
>
> > Is there a workaround for this? without having to change the file system
> > from NFS.
> >
>
> Yes. Configure your NFS so that file locking works correctly.
>
> --
> D. Richard Hipp <[EMAIL PROTECTED]>
>