You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/08/08 12:12:47 UTC
svn commit: r1154901 - in /cxf/branches/2.4.x-fixes: ./
rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java
Author: sergeyb
Date: Mon Aug 8 10:12:47 2011
New Revision: 1154901
URL: http://svn.apache.org/viewvc?rev=1154901&view=rev
Log:
Merged revisions 1154900 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1154900 | sergeyb | 2011-08-08 11:11:42 +0100 (Mon, 08 Aug 2011) | 1 line
[CXF-3596] Updating RetryStrategy to optionally move to the next address after specific number of retries
........
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 8 10:12:47 2011
@@ -1 +1 @@
-/cxf/trunk:1154143,1154149,1154158,1154229,1154232,1154466,1154870,1154896
+/cxf/trunk:1154143,1154149,1154158,1154229,1154232,1154466,1154870,1154896,1154900
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java?rev=1154901&r1=1154900&r2=1154901&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java (original)
+++ cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/clustering/RetryStrategy.java Mon Aug 8 10:12:47 2011
@@ -32,13 +32,46 @@ import org.apache.cxf.message.Exchange;
*/
public class RetryStrategy extends SequentialStrategy {
+ private int maxNumberOfRetries;
+ private int counter;
+
/* (non-Javadoc)
* @see org.apache.cxf.clustering.AbstractStaticFailoverStrategy#getAlternateEndpoints(
* org.apache.cxf.message.Exchange)
*/
@Override
public List<Endpoint> getAlternateEndpoints(Exchange exchange) {
- return getEndpoints(exchange, true);
+ return getEndpoints(exchange, stillTheSameAddress());
+ }
+
+ protected boolean stillTheSameAddress() {
+ if (maxNumberOfRetries == 0) {
+ return true;
+ }
+ // let the target selector move to the next address
+ // and then stay on the same address for maxNumberOfRetries
+ synchronized (this) {
+ if (++counter <= maxNumberOfRetries) {
+ return true;
+ } else {
+ counter = 0;
+ return false;
+ }
+ }
+
+ }
+
+
+ public void setMaxNumberOfRetries(int maxNumberOfRetries) {
+ if (maxNumberOfRetries < 0) {
+ throw new IllegalArgumentException();
+ }
+ this.maxNumberOfRetries = maxNumberOfRetries;
+ }
+
+
+ public int getMaxNumberOfRetries() {
+ return maxNumberOfRetries;
}
}
\ No newline at end of file