Mercurial > jhg
diff src/org/tmatesoft/hg/repo/HgRepositoryLock.java @ 505:3cd3c3d37432
Use checked exception to indicate fs lock entanglements
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 30 Nov 2012 22:08:11 +0100 |
parents | 9c0138cda59a |
children | c56edf42be64 2f1cd1c26de5 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/repo/HgRepositoryLock.java Fri Nov 30 21:58:00 2012 +0100 +++ b/src/org/tmatesoft/hg/repo/HgRepositoryLock.java Fri Nov 30 22:08:11 2012 +0100 @@ -25,6 +25,7 @@ import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import org.tmatesoft.hg.core.HgRepositoryLockException; import org.tmatesoft.hg.internal.Experimental; import org.tmatesoft.hg.internal.Internals; @@ -103,8 +104,9 @@ * * <p>Multiple calls are possible, but corresponding number of {@link #release()} * calls shall be made. + * @throws HgRepositoryLockException if failed to grab a lock */ - public void acquire() { + public void acquire() throws HgRepositoryLockException { if (use > 0) { use++; return; @@ -135,15 +137,16 @@ } while (stopTime == -1/*no timeout*/ || System.currentTimeMillis() <= stopTime); String msg = String.format("Failed to aquire lock, waited for %d seconds, present owner: '%s'", timeoutSeconds, readLockInfo()); - throw new HgInvalidStateException(msg); + throw new HgRepositoryLockException(msg); } /** * Release lock we own + * @throws HgRepositoryLockException if there's no evidence we do own a lock */ - public void release() { + public void release() throws HgRepositoryLockException { if (use == 0) { - throw new HgInvalidStateException("Lock is not held!"); + throw new HgRepositoryLockException("Lock is not held!"); } use--; if (use > 0) {