# HG changeset patch # User Benoit Boissinot # Date 2006-02-20 00:09:40 # Node ID e6e70450edb9dfaf1fad7b39540ff8935e2d679a # Parent 457cdec745f8300e413557c0f005b4b7fa6e71f8 Raise a different exception when the lock is not available When the filesystem is read-only or if we have some other error, there is no need to wait. Raise a lock.LockUnavailable exception. diff --git a/mercurial/lock.py b/mercurial/lock.py --- a/mercurial/lock.py +++ b/mercurial/lock.py @@ -5,10 +5,14 @@ # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. -import os, time +import errno, os, time import util -class LockHeld(Exception): +class LockException(Exception): + pass +class LockHeld(LockException): + pass +class LockUnavailable(LockException): pass class lock(object): @@ -38,8 +42,11 @@ class lock(object): try: util.makelock(str(pid), self.f) self.held = 1 - except (OSError, IOError): - raise LockHeld(util.readlock(self.f)) + except (OSError, IOError), why: + if why.errno == errno.EEXIST: + raise LockHeld(util.readlock(self.f)) + else: + raise LockUnavailable(why) def release(self): if self.held: