This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: sqlite3: bug with monotone
- From: Warren Young <warren at etr-usa dot com>
- To: cygwin at cygwin dot com
- Date: Mon, 03 Jun 2013 11:36:21 -0600
- Subject: Re: sqlite3: bug with monotone
- References: <51A6B6EB dot 6050309 at users dot sourceforge dot net> <loom dot 20130530T122354-144 at post dot gmane dot org> <51A7862F dot 1070507 at etr-usa dot com> <51A7D47E dot 3050502 at users dot sourceforge dot net> <51A7F547 dot 6020509 at etr-usa dot com> <20130531092228 dot GB30659 at calimero dot vinschen dot de> <51A900EF dot 2020606 at etr-usa dot com> <20130601105741 dot GC30659 at calimero dot vinschen dot de> <20130602103125 dot GE13934 at calimero dot vinschen dot de>
On 6/2/2013 04:31, Corinna Vinschen wrote:
I just applied a patch to implement mandatory locking.
Thank you!
It also supports
F_GETLK, with limited usability due to Windows restrictions, as I
explained in other mail.
It is what it is.
A haiku:
Yesterday it worked.
Today it is not working.
Windows is like that.
I dropped the F_MDLCK idea. Instead I implemented a specific fcntl code
to switch to mandatory locking on a file descriptor:
fcntl (fd, F_LCK_MANDATORY, 1);
Could you add an O_MAND open(2) option as well to turn on the same
feature? This will avoid a race condition.
I apologize for not thinking of this earlier. It just occurred to me as
I was working on the SQLite patch to make use of this new feature.
I didn't add a way for the user to switch on mandatory locking for now,
and I don't intend to do that for 1.7.19. Hope that helps, nevertheless.
I *think* it's sufficient. I may think differently later. :)
My current plan is that Cygwin SQLite will build in "Unix mode" now, but
with the build flag Yaakov requested above, and mandatory locking
enabled unless an environment variable is set. This will let those in
Achim's camp use the official Cygwin SQLite but ask it to run in pure
POSIX mode.
A test build will appear later today.
Please give the 32 bit snapshot a try ASAP.
As I see it, the test will proceed in several stages:
0. I patch SQLite and run it against both .18 and your snapshot, and
strace it to verify that fcntl(fd, 0x99, 1) is called and returns 0 with
the snapshot and returns -1 with errno == EINVAL for .18. Both count as
"success" so we don't have to require .19.
1. I upload it, and Achim and Yaakov try it and see if this new build
satisfies their use cases.
2. I promote test to curr -- waiting for .19 to hit the mirrors if Achim
and Yaakov get back to me before that -- and wait for screams from the
users.
3. A month or two hence, I'll tell upstream about the patch, and hope
they adopt it.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple