Comment 11 for bug 403697

Revision history for this message
Sven Heinrich (s-heinrich) wrote : Re: [Bug 403697] Re: lstat on NFS4 hangs while bzr's trying to read the dirstate file

Thank you, that you are spending time with this bug. This bug came up
with Karmic. Now I use Lucid and still have problems with the NFS lock.
I received another message concerning the locking, see below. But I am
not that experienced with our NFS that is why I want to check the NFS
installation with our admin first.

Sven Heinrich

*Subject: **[Bug 98836] Re: [MASTER] "OS locks must die" - dirstate file
write locks exclude readers and limit portability*
*Reply-To: *Bug 98836 <<email address hidden>
<mailto:<email address hidden>>>

John, bzr works fine on NFS unless your NFS installation is broken, as
is explained perfectly clearly in bug 108605. This bug is saying it
would be nice to work around misconfigured NFS. There's also a 'nolock'
NFS option if you want it. Don't be a troll.

--
[MASTER] "OS locks must die" - dirstate file write locks exclude readers
and limit portability
https://bugs.launchpad.net/bugs/98836
You received this bug notification because you are a direct subscriber
of a duplicate bug (137387).

Status in Bazaar Version Control System: Confirmed

Bug description:
As of bzr 1.12 (and many previous versions) the dirstate working tree
format uses an OS lock on the dirstate file. This was done so that we
could safely make in-place updates to the dirstate file. Bzr also (and
its tied to the OS lock usage) uses an edit-inplace approach to
modifying the file.

However, this causes several problems:

  * While the dirstate file is locked, it cannot be read: eg by info
(bug 174055) or by diff
  * OS locks don't work well on all platforms
  * They are particularly problematic on network filesystems, which
often don't have working file locking either inherently or because of a
configuration problem, eg smb (bug 31006), AFP (bug 114528), nfs (bug
108605
)
  * OS lock behaviour varies between platforms therefore is harder to
test and debug, eg bug 305006
  * On some platforms, OS locks are implicitly shared across a process
and this makes them harder to test and/or hides bugs
  * OS locks can't be broken and don't show who is holding the lock
  * OS locks are not supported by Jython
* When the disk is full or bzr crashes the dirstate file can be shorter
than it should be.

All these bugs are collected into this one bug, as few of them can be
fixed without fixing the OS lock issue, and fixing the OS lock issue
will fix them all.

If the use of diff and stat while a commit editor is open is fixed in a
different way - e.g. by a separate stat cache, then we can just modify
this description to only list the remaining issues.

These bugs are somewhat distinct aspects so shouldn't be marked as
dupes, but they can probably best be fixed together.

Totally fixing this requires changing the format not to rely on file
locking, which requires a format that is safe if it is being read and
written simultaneously. That format can't assume any particular
behaviour if an attempt is made to rename a file while it's being read,
because that can either fail, cause an error for the reader, or follow
the rename, depending on the platform.

Some partial fixes may also be possible.

On 2010-08-05 21:35, Fabio Marconi wrote:
> Thank you for taking the time to report this bug and helping to make Ubuntu better.
> Is this bug reproducible with the latest Lucid packages ?
> Tanks in advance.
>
> ** Changed in: ubuntu
> Status: New => Incomplete
>
>

--
Dipl.-Ing. Sven Heinrich
TU Braunschweig
Institut für Statik
Beethovenstr. 51
D-38106 Braunschweig

Email: <email address hidden>
Tel. ++49 / (0)531 391-3670
Fax. ++49 / (0)531 391-8116