public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Warren Young <warren@etr-usa.com>
To: Cygwin-L <cygwin@cygwin.com>
Subject: Re: cygwin 1.7.15: svn disk I/O error
Date: Wed, 20 Jun 2012 00:22:00 -0000	[thread overview]
Message-ID: <4FE117BA.1020909@etr-usa.com> (raw)
In-Reply-To: <87pq8vxaok.fsf@Rainer.invalid>

On 6/19/2012 3:18 PM, Achim Gratz wrote:
>
> I suspect that svn
> does not deal with the file being locked exclusively (when TortoiseSVN
> accesses the database) and some call through the windows interface
> blocked.

It's possible svn has a timer on the call that results in a SQL call 
through SQLite, and when this doesn't return as fast as svn thinks it 
ought to, it bombs out, complaining that there "must" be a disk I/O 
problem.  What may actually be happening is that Windows' aggressive 
locking strategy has set up a deadlock between two processes.

As for why .3 and .12 behave differently, it's probably because one or 
more locks that used to be owned by the SQLite DLL that are now owned by 
the Cygwin DLL.  That is, files are being accessed on the DLL's behalf 
by Cygwin now, rather than directly through the Windows API.  Since 
Cygwin doubtless does file I/O differently than SQLite did, for the same 
basic reason that any two programmers tend to write code differently, 
there's a new conflict.

If this is the case, the best solution may be for TortoiseSVN to stop 
grabbing files for long-term exclusive use.  It should only be locking 
the svn DB files as long as is necessary to make some change.

> Note that SQLite isn't really designed for concurrent access
> to the database file from a different process.

There is a paucity of truth in that statement.  See the SQLite FAQ:

	https://sqlite.org/faq.html#q5

But, there's only so much SQLite can do to cooperate with the OS's 
locking strategy.  On POSIX systems where SQLite was born, locking is 
mostly advisory and cooperative, whereas Windows gives you mandatory 
locks by default in a lot of cases.  Mandatory locks allow one process 
(e.g. TortoiseSVN) to deny another (e.g. Cygwin svn) the ability to 
change a file, indefinitely.

--
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

  reply	other threads:[~2012-06-20  0:22 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-14 19:48 Rolf Campbell
2012-06-14 19:55 ` Christopher Faylor
2012-06-14 20:09   ` Rolf Campbell
2012-06-14 22:00   ` Garrison, Jim (ETW)
2012-06-14 22:02     ` Garrison, Jim (ETW)
2012-06-15 10:38     ` Warren Young
2012-06-15 13:24       ` Rolf Campbell
2012-06-15 13:43       ` Rolf Campbell
2012-06-19  9:32 ` Adam Dinwoodie
2012-06-19 19:24   ` Rolf Campbell
2012-06-19 21:19     ` Achim Gratz
2012-06-20  0:22       ` Warren Young [this message]
2012-06-20  5:25         ` Achim Gratz
2012-06-26 16:46           ` Achim Gratz
2012-06-26 17:25             ` David Rothenberger
2012-06-26 18:07               ` Achim Gratz
2012-06-27  9:11                 ` Adam Dinwoodie
2012-06-27 14:07                 ` Achim Gratz
2012-06-27 18:18                   ` David Rothenberger
2012-06-27 18:41                     ` Achim Gratz
2012-06-28 11:49                       ` Achim Gratz
2012-06-28 16:31                         ` David Rothenberger
2012-06-28 19:04                           ` Achim Gratz
2012-06-28 19:27                             ` David Rothenberger
2012-06-28 20:40                               ` Achim Gratz
2012-07-11  6:34                               ` Achim Gratz
2012-07-11  7:07                                 ` marco atzeri
2012-07-11  7:48                                   ` Achim Gratz
2012-07-11 17:19                                     ` marco atzeri
2012-06-28 17:37                     ` Rolf Campbell
2012-06-28 19:11                       ` Achim Gratz
2012-06-28 20:03                         ` Warren Young
2012-06-28 20:35                           ` Achim Gratz
2012-06-28 21:17                             ` Warren Young
2012-06-28 20:37                       ` David Rothenberger
     [not found] <CABVhxxKw8i96668GgHmMyPXCn+nBS8S874Q7wSSHgoer8iiSsw@mail.gmail.com>
2012-08-07  1:10 ` Michael Gundlach
2012-08-07  1:55   ` Warren Young
2012-08-07  1:57     ` Michael Gundlach
2012-08-07  2:42       ` Warren Young
2012-08-07 12:16         ` Michael Gundlach
2012-08-07 17:56         ` David Rothenberger
2012-08-08 13:14           ` Warren Young
2012-08-07  7:00     ` Achim Gratz
2012-08-07  7:38       ` Warren Young
2012-08-07  5:07   ` Christopher Faylor
     [not found]     ` <CABVhxxJ_nsTF3o85nWJsRdMOq38LYr2R9b9H8ATHfNCCqnmbqw@mail.gmail.com>
2012-08-07 14:05       ` Michael Gundlach

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FE117BA.1020909@etr-usa.com \
    --to=warren@etr-usa.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).