On Sat, Jan 29, 2011 at 10:06 PM, Ginn Chen <ginn.c...@oracle.com> wrote:

> I think a single process accessing a single Sqlite database at a time over
> NFS is supposed to be fine.
>
> But it is not working on Solaris.
> On Solaris, man page of mmap() has
>
>     EAGAIN    The file to be  mapped  is  already  locked  using
>               advisory   or   mandatory   record   locking.  See
>               fcntl(2).
>
> I found if the file on NFS has been locked with fcntl(), mmap() may fail.
> It doesn't fail if both l_start and l_end are 0.
>
> Thus, I got "Error: disk I/O error" for any operation after setting
> journal_mode to WAL.
> See https://bugzilla.mozilla.org/show_bug.cgi?id=629296
>
> The problem is setting journal_mode to WAL is successful, but it cannot be
> set back.
> User has to move the db file to another filesystem and set journal_mode to
> delete.
>
> I guess -DSQLITE_SHM_DIRECTORY="/var/tmp" might be a solution, but it is
> unsupported.
>

We looked at that idea when we were originally developing WAL, but it falls
down badly for processes in a chroot jail.


>
> Any idea how can we make the behavior better on Solaris?
> Maybe fallback to another lock method if it is on NFS?
>
> BTW: With the same NFS server, sqlite3 works fine on Linux and Mac OS X.
>
> Thanks,
>
> Ginn
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>



-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to