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