From 750ee7169d77a8838de011b565f259c804492414 Mon Sep 17 00:00:00 2001 From: kfujino Date: Mon, 29 Aug 2011 10:30:38 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51736. Make rpcTimeout configurable in BackupManager. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1162721 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/ha/session/BackupManager.java | 16 +++++++++++++++- .../apache/catalina/ha/session/mbeans-descriptors.xml | 4 ++++ .../catalina/tribes/tipis/AbstractReplicatedMap.java | 12 +++++++++--- webapps/docs/config/cluster-manager.xml | 5 +++++ 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/java/org/apache/catalina/ha/session/BackupManager.java b/java/org/apache/catalina/ha/session/BackupManager.java index 316cac595..2d0a53ab3 100644 --- a/java/org/apache/catalina/ha/session/BackupManager.java +++ b/java/org/apache/catalina/ha/session/BackupManager.java @@ -67,6 +67,11 @@ public class BackupManager extends ClusterManagerBase private int mapSendOptions = Channel.SEND_OPTIONS_SYNCHRONIZED_ACK|Channel.SEND_OPTIONS_USE_ACK; /** + * Timeout for RPC messages. + */ + private long rpcTimeout = DEFAULT_REPL_TIMEOUT; + + /** * Constructor, just calls super() * */ @@ -158,7 +163,7 @@ public class BackupManager extends ClusterManagerBase CatalinaCluster catclust = cluster; LazyReplicatedMap map = new LazyReplicatedMap(this, catclust.getChannel(), - DEFAULT_REPL_TIMEOUT, + rpcTimeout, getMapName(), getClassLoaders()); map.setChannelSendOptions(mapSendOptions); @@ -238,6 +243,14 @@ public class BackupManager extends ClusterManagerBase return mapSendOptions; } + public void setRpcTimeout(long rpcTimeout) { + this.rpcTimeout = rpcTimeout; + } + + public long getRpcTimeout() { + return rpcTimeout; + } + @Override public String[] getInvalidatedSessions() { return new String[0]; @@ -252,6 +265,7 @@ public class BackupManager extends ClusterManagerBase result.notifyListenersOnReplication = notifyListenersOnReplication; result.mapSendOptions = mapSendOptions; result.maxActiveSessions = maxActiveSessions; + result.rpcTimeout = rpcTimeout; return result; } diff --git a/java/org/apache/catalina/ha/session/mbeans-descriptors.xml b/java/org/apache/catalina/ha/session/mbeans-descriptors.xml index 3ece61d6b..4c6fc5c77 100644 --- a/java/org/apache/catalina/ha/session/mbeans-descriptors.xml +++ b/java/org/apache/catalina/ha/session/mbeans-descriptors.xml @@ -539,6 +539,10 @@ name="rejectedSessions" description="Number of sessions we rejected due to maxActive beeing reached" type="int"/> + 0) { + for (int i = 0; i < resp.length; i++) { + mapMemberAdded(resp[i].getSource()); + messageReceived(resp[i].getMessage(), resp[i].getSource()); + } + } else { + log.warn("broadcast 0 replies, probably a timeout."); } } else { channel.send(channel.getMembers(),msg,channelSendOptions); diff --git a/webapps/docs/config/cluster-manager.xml b/webapps/docs/config/cluster-manager.xml index 054c71ed8..8e92c7101 100644 --- a/webapps/docs/config/cluster-manager.xml +++ b/webapps/docs/config/cluster-manager.xml @@ -132,6 +132,11 @@ sessions where the current node is the primary node for the session are considered active sessions. + + Timeout for RPC message used for broadcast and transfer state from + another map. + Default value is 15000 milliseconds. + -- 2.11.0