Author: ritchiem
Date: Sat Apr 11 01:02:37 2009
New Revision: 764130
URL: http://svn.apache.org/viewvc?rev=764130&view=rev
Log:
QPID-1793 : Update AMQChannel to remember any AMQException that occurs during
requeue and then throws that after it has attempted to requeue all the
messsagse from the unackedMap.
merged from trunk r764111
Modified:
qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
Modified:
qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java?rev=764130&r1=764129&r2=764130&view=diff
==============================================================================
---
qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
(original)
+++
qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
Sat Apr 11 01:02:37 2009
@@ -490,26 +490,45 @@
}
}
+ // Place to hold any error that occured during the requeueing.
+ AMQException error = null;
for (QueueEntry unacked : messagesToBeDelivered)
{
- if (!unacked.isQueueDeleted())
+ try
{
- // Mark message redelivered
- unacked.setRedelivered(true);
+ if (!unacked.isQueueDeleted())
+ {
+ // Mark message redelivered
+ unacked.setRedelivered(true);
- // Ensure message is released for redelivery
- unacked.release();
+ // Ensure message is released for redelivery
+ unacked.release();
- // Deliver Message
- deliveryContext.requeue(unacked);
+ // Deliver Message
+ deliveryContext.requeue(unacked);
+ }
+ else
+ {
+ unacked.dequeueAndDelete(_storeContext);
+ }
}
- else
+ catch (AMQException e)
{
- unacked.dequeueAndDelete(_storeContext);
+ //Log the error and store it
+ _log.error(e.getMessage(),e);
+ // We store the last seen exception for rethrowing after
+ // attempting to process all the entries.
+ error = e;
}
}
+ // If we had an error during the requeue process throw it now.
+ if (error != null)
+ {
+ throw error;
+ }
+
}
/**
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]