From 7fc92f99b15d63abe7c77aa9e3cb3c14ab50d350 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 31 Jul 2007 23:33:13 +0000 Subject: [PATCH] Be sure not to leave our lock dangling if the wrapped operation fails with an exception. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4797 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/presents/peer/server/PeerManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 2c2415158..6dff8aefe 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -505,8 +505,11 @@ public class PeerManager public void requestCompleted (String nodeName) { if (getNodeObject().nodeName.equals(nodeName)) { // lock acquired successfully - perform the operation, and release the lock. - operation.run(); - releaseLock(lock, new ResultListener.NOOP()); + try { + operation.run(); + } finally { + releaseLock(lock, new ResultListener.NOOP()); + } } else { // some other peer beat us to it operation.fail(nodeName);