summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2012-02-07 11:41:43 +0000
committerKeith Wall <kwall@apache.org>2012-02-07 11:41:43 +0000
commit3ba03dee0465151bc8051d38b63645f87ada93f4 (patch)
tree356af645970b957884e110987202cdc39ed66631 /java
parent49cba9e9ca00bce8f3b6315e7ee9bd1c4d11dec4 (diff)
downloadqpid-python-3ba03dee0465151bc8051d38b63645f87ada93f4.tar.gz
QPID-3809: Java Broker killed by java.net.SocketException: Broken pipe (killed by uncaught exception handler)
Applied patch from Andrew MacBean <andymacbean@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1241433 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/queue/QueueRunner.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/QueueRunner.java b/java/broker/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
index f668333319..e9d4290174 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
@@ -20,16 +20,16 @@
*/
package org.apache.qpid.server.queue;
-import org.apache.log4j.Logger;
-
-import org.apache.qpid.AMQException;
-import org.apache.qpid.server.logging.actors.CurrentActor;
-
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import org.apache.log4j.Logger;
+import org.apache.qpid.AMQException;
+import org.apache.qpid.server.logging.actors.CurrentActor;
+import org.apache.qpid.transport.TransportException;
+
/**
* QueueRunners are Runnables used to process a queue when requiring
* asynchronous message delivery to subscriptions, which is necessary
@@ -73,10 +73,22 @@ public class QueueRunner implements Runnable
runAgain = _queue.processQueue(this);
}
- catch (AMQException e)
+ catch (final AMQException e)
{
_logger.error("Exception during asynchronous delivery by " + toString(), e);
}
+ catch (final TransportException transe)
+ {
+ final String errorMessage = "Problem during asynchronous delivery by " + toString();
+ if(_logger.isDebugEnabled())
+ {
+ _logger.debug(errorMessage, transe);
+ }
+ else
+ {
+ _logger.info(errorMessage + transe.getMessage());
+ }
+ }
finally
{
CurrentActor.remove();