diff options
| author | Arnaud Simon <arnaudsimon@apache.org> | 2008-06-05 09:17:40 +0000 |
|---|---|---|
| committer | Arnaud Simon <arnaudsimon@apache.org> | 2008-06-05 09:17:40 +0000 |
| commit | e0c1408d146b0efeca3bf0c55131e7049f783288 (patch) | |
| tree | fd7461d49e24488143b425ff6864ca83b5b4ffe1 /java/client/src | |
| parent | d1b4facf05605f0b70addb5c666a28f20562f514 (diff) | |
| download | qpid-python-e0c1408d146b0efeca3bf0c55131e7049f783288.tar.gz | |
QPID-1123: Added a timeout (threading issue is still to be fixed)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@663507 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client/src')
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/nclient/Client.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/java/client/src/main/java/org/apache/qpidity/nclient/Client.java b/java/client/src/main/java/org/apache/qpidity/nclient/Client.java index 0bd203a8dd..5b45387be3 100644 --- a/java/client/src/main/java/org/apache/qpidity/nclient/Client.java +++ b/java/client/src/main/java/org/apache/qpidity/nclient/Client.java @@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.TimeUnit; import org.apache.qpid.client.url.URLParser_0_10; import org.apache.qpid.jms.BrokerDetails; @@ -255,15 +256,24 @@ public class Client implements org.apache.qpidity.nclient.Connection _lock.lock(); try { - try { - while (!closed) + try + { + long timeout = 60000; + long start = System.currentTimeMillis(); + long elapsed = 0; + while (!closed && elapsed < timeout) + { + closeOk.await(timeout - elapsed, TimeUnit.MILLISECONDS); + elapsed = System.currentTimeMillis() - start; + } + if(! closed ) { - closeOk.await(); + throw new QpidException("Timed out when closing connection", ErrorCode.CONNECTION_ERROR, null); } } catch (InterruptedException e) { - // do nothing + throw new QpidException("Interrupted when closing connection", ErrorCode.CONNECTION_ERROR, null); } } finally |
