Author: davsclaus
Date: Tue Dec 20 07:52:45 2011
New Revision: 1221130

URL: http://svn.apache.org/viewvc?rev=1221130&view=rev
Log:
CAMEL-4800: request/reply over JMS include details about correlationID if 
timeout occurs. Reduce noise in log to only log a WARN and no stacktrace etc.

Removed:
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/UnknownReplyMessageException.java
Modified:
    camel/branches/camel-2.8.x/   (props changed)
    
camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyHandler.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyHolder.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyHandler.java
    
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 20 07:52:45 2011
@@ -1 +1 @@
-/camel/trunk:1202148,1202167,1202204-1202206,1202214-1202215,1202223,1202659,1202685,1203879,1203978,1204338,1205124,1205372,1205412,1205429,1205431,1205713,1206116,1206414,1207743,1207784,1208301,1208930,1208964-1208965,1209006-1209007,1209382,1209401,1209477,1209845-1209846,1210113,1210391,1210771,1210830,1211363,1211414,1211773,1211811,1212275-1212276,1212408,1213197,1213219,1213232,1213526,1214132,1214639,1214743,1215240,1215448,1215482,1220711
+/camel/trunk:1202148,1202167,1202204-1202206,1202214-1202215,1202223,1202659,1202685,1203879,1203978,1204338,1205124,1205372,1205412,1205429,1205431,1205713,1206116,1206414,1207743,1207784,1208301,1208930,1208964-1208965,1209006-1209007,1209382,1209401,1209477,1209845-1209846,1210113,1210391,1210771,1210830,1211363,1211414,1211773,1211811,1212275-1212276,1212408,1213197,1213219,1213232,1213526,1214132,1214639,1214743,1215240,1215448,1215482,1220711,1221129

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
 (original)
+++ 
camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
 Tue Dec 20 07:52:45 2011
@@ -31,6 +31,11 @@ public class ExchangeTimedOutException e
         this.timeout = timeout;
     }
 
+    public ExchangeTimedOutException(Exchange exchange, long timeout, String 
message) {
+        super("The OUT message was not received within: " + timeout + " millis 
due " + message, exchange);
+        this.timeout = timeout;
+    }
+
     /**
      * Return the timeout which expired in milliseconds
      */

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyHandler.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyHandler.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyHandler.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyHandler.java
 Tue Dec 20 07:52:45 2011
@@ -26,12 +26,9 @@ import org.apache.camel.Exchange;
  */
 public class PersistentQueueReplyHandler extends TemporaryQueueReplyHandler {
 
-    private MessageSelectorCreator dynamicMessageSelector;
-
     public PersistentQueueReplyHandler(ReplyManager replyManager, Exchange 
exchange, AsyncCallback callback,
-                                       String originalCorrelationId, long 
timeout, MessageSelectorCreator dynamicMessageSelector) {
-        super(replyManager, exchange, callback, originalCorrelationId, 
timeout);
-        this.dynamicMessageSelector = dynamicMessageSelector;
+                                       String originalCorrelationId, String 
correlationId, long timeout) {
+        super(replyManager, exchange, callback, originalCorrelationId, 
correlationId, timeout);
     }
 
 }

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
 Tue Dec 20 07:52:45 2011
@@ -44,7 +44,7 @@ public class PersistentQueueReplyManager
                                 String originalCorrelationId, String 
correlationId, long requestTimeout) {
         // add to correlation map
         PersistentQueueReplyHandler handler = new 
PersistentQueueReplyHandler(replyManager, exchange, callback,
-                originalCorrelationId, requestTimeout, dynamicMessageSelector);
+                originalCorrelationId, correlationId, requestTimeout);
         correlation.put(correlationId, handler, requestTimeout);
         return correlationId;
     }
@@ -76,9 +76,9 @@ public class PersistentQueueReplyManager
         } else {
             // we could not correlate the received reply message to a matching 
request and therefore
             // we cannot continue routing the unknown message
-            String text = "Reply received for unknown correlationID [" + 
correlationID + "] -> " + message;
+            String text = "Reply received for unknown correlationID [" + 
correlationID + "]. The message will be ignored: " + message;
+            // log a warn and then ignore the message
             log.warn(text);
-            throw new UnknownReplyMessageException(text, message, 
correlationID);
         }
     }
 

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyHolder.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyHolder.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyHolder.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyHolder.java
 Tue Dec 20 07:52:45 2011
@@ -33,23 +33,27 @@ public class ReplyHolder {
     private final AsyncCallback callback;
     private final Message message;
     private final String originalCorrelationId;
+    private final String correlationId;
     private long timeout;
 
     /**
      * Constructor to use when a reply message was received
      */
-    public ReplyHolder(Exchange exchange, AsyncCallback callback, String 
originalCorrelationId, Message message) {
+    public ReplyHolder(Exchange exchange, AsyncCallback callback, String 
originalCorrelationId,
+                       String correlationId, Message message) {
         this.exchange = exchange;
         this.callback = callback;
         this.originalCorrelationId = originalCorrelationId;
+        this.correlationId = correlationId;
         this.message = message;
     }
 
     /**
      * Constructor to use when a timeout occurred
      */
-    public ReplyHolder(Exchange exchange, AsyncCallback callback, String 
originalCorrelationId, long timeout) {
-        this(exchange, callback, originalCorrelationId, null);
+    public ReplyHolder(Exchange exchange, AsyncCallback callback, String 
originalCorrelationId,
+                       String correlationId, long timeout) {
+        this(exchange, callback, originalCorrelationId, correlationId, null);
         this.timeout = timeout;
     }
 
@@ -72,6 +76,15 @@ public class ReplyHolder {
     }
 
     /**
+     * Gets the correlation id
+     *
+     * @see #getOriginalCorrelationId()
+     */
+    public String getCorrelationId() {
+        return correlationId;
+    }
+
+    /**
      * Gets the received message
      *
      * @return  the received message, or <tt>null</tt> if timeout occurred and 
no message has been received

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
 Tue Dec 20 07:52:45 2011
@@ -113,8 +113,13 @@ public abstract class ReplyManagerSuppor
 
             boolean timeout = holder.isTimeout();
             if (timeout) {
+                log.warn("Timeout occurred after {} millis waiting for reply 
message with correlationID [{}]."
+                        + " Setting ExchangeTimedOutException on ExchangeId: 
{} and continue routing.",
+                        new Object[]{holder.getRequestTimeout(), 
holder.getCorrelationId(), exchange.getExchangeId()});
+
                 // no response, so lets set a timed out exception
-                exchange.setException(new ExchangeTimedOutException(exchange, 
holder.getRequestTimeout()));
+                String msg = "reply message with correlationID: " + 
holder.getCorrelationId() + " not received";
+                exchange.setException(new ExchangeTimedOutException(exchange, 
holder.getRequestTimeout(), msg));
             } else {
                 JmsMessage response = new JmsMessage(message, 
endpoint.getBinding());
                 Object body = response.getBody();

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyHandler.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyHandler.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyHandler.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyHandler.java
 Tue Dec 20 07:52:45 2011
@@ -34,27 +34,29 @@ public class TemporaryQueueReplyHandler 
     protected final AsyncCallback callback;
     // remember the original correlation id, in case the server returns back a 
reply with a messed up correlation id
     protected final String originalCorrelationId;
+    protected final String correlationId;
     protected final long timeout;
 
     public TemporaryQueueReplyHandler(ReplyManager replyManager, Exchange 
exchange, AsyncCallback callback,
-                                      String originalCorrelationId, long 
timeout) {
+                                      String originalCorrelationId, String 
correlationId, long timeout) {
         this.replyManager = replyManager;
         this.exchange = exchange;
         this.originalCorrelationId = originalCorrelationId;
+        this.correlationId = correlationId;
         this.callback = callback;
         this.timeout = timeout;
     }
 
     public void onReply(String correlationId, Message reply) {
         // create holder object with the the reply
-        ReplyHolder holder = new ReplyHolder(exchange, callback, 
originalCorrelationId, reply);
+        ReplyHolder holder = new ReplyHolder(exchange, callback, 
originalCorrelationId, correlationId, reply);
         // process the reply
         replyManager.processReply(holder);
     }
 
     public void onTimeout(String correlationId) {
         // create holder object without the reply which means a timeout 
occurred
-        ReplyHolder holder = new ReplyHolder(exchange, callback, 
originalCorrelationId, timeout);
+        ReplyHolder holder = new ReplyHolder(exchange, callback, 
originalCorrelationId, correlationId, timeout);
         // process timeout
         replyManager.processReply(holder);
     }

Modified: 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java?rev=1221130&r1=1221129&r2=1221130&view=diff
==============================================================================
--- 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
 (original)
+++ 
camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
 Tue Dec 20 07:52:45 2011
@@ -38,7 +38,7 @@ public class TemporaryQueueReplyManager 
     public String registerReply(ReplyManager replyManager, Exchange exchange, 
AsyncCallback callback,
                                 String originalCorrelationId, String 
correlationId, long requestTimeout) {
         // add to correlation map
-        TemporaryQueueReplyHandler handler = new 
TemporaryQueueReplyHandler(this, exchange, callback, originalCorrelationId, 
requestTimeout);
+        TemporaryQueueReplyHandler handler = new 
TemporaryQueueReplyHandler(this, exchange, callback, originalCorrelationId, 
correlationId, requestTimeout);
         correlation.put(correlationId, handler, requestTimeout);
         return correlationId;
     }
@@ -66,9 +66,9 @@ public class TemporaryQueueReplyManager 
         } else {
             // we could not correlate the received reply message to a matching 
request and therefore
             // we cannot continue routing the unknown message
-            String text = "Reply received for unknown correlationID [" + 
correlationID + "] -> " + message;
+            String text = "Reply received for unknown correlationID [" + 
correlationID + "]. The message will be ignored: " + message;
+            // log a warn and then ignore the message
             log.warn(text);
-            throw new UnknownReplyMessageException(text, message, 
correlationID);
         }
     }
 


Reply via email to