Author: pferraro
Date: 2008-10-22 10:04:01 -0400 (Wed, 22 Oct 2008)
New Revision: 1982
Modified:
trunk/mod_cluster/src/main/java/org/jboss/modcluster/Utils.java
trunk/mod_cluster/src/main/java/org/jboss/modcluster/mcmp/MCMPUtils.java
Log:
Don't send uncessary REMOVE-APP * messages during reset
Modified: trunk/mod_cluster/src/main/java/org/jboss/modcluster/Utils.java
===================================================================
--- trunk/mod_cluster/src/main/java/org/jboss/modcluster/Utils.java 2008-10-22 13:09:29
UTC (rev 1981)
+++ trunk/mod_cluster/src/main/java/org/jboss/modcluster/Utils.java 2008-10-22 14:04:01
UTC (rev 1982)
@@ -116,7 +116,7 @@
* @param context
* @return
*/
- public static Set<String> getHosts(Context context)
+ public static Set<String> getAliases(Context context)
{
Host host = (Host) context.getParent();
String name = host.getName();
Modified: trunk/mod_cluster/src/main/java/org/jboss/modcluster/mcmp/MCMPUtils.java
===================================================================
--- trunk/mod_cluster/src/main/java/org/jboss/modcluster/mcmp/MCMPUtils.java 2008-10-22
13:09:29 UTC (rev 1981)
+++ trunk/mod_cluster/src/main/java/org/jboss/modcluster/mcmp/MCMPUtils.java 2008-10-22
14:04:01 UTC (rev 1982)
@@ -200,21 +200,21 @@
private static MCMPRequest createRequest(MCMPRequestType type, Context context)
{
- return createContextRequest(type, Utils.getJvmRoute(context),
Utils.getHosts(context), context.getPath());
+ return createContextRequest(type, Utils.getJvmRoute(context),
Utils.getAliases(context), context.getPath());
}
- private static MCMPRequest createContextRequest(MCMPRequestType type, String jvmRoute,
Set<String> hosts, String path)
+ private static MCMPRequest createContextRequest(MCMPRequestType type, String jvmRoute,
Set<String> aliases, String path)
{
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("Context", "".equals(path) ? "/" :
path);
StringBuilder builder = new StringBuilder();
- Iterator<String> iter = hosts.iterator();
- while (iter.hasNext())
+ Iterator<String> hosts = aliases.iterator();
+ while (hosts.hasNext())
{
- builder.append(iter.next());
- if (iter.hasNext())
+ builder.append(hosts.next());
+ if (hosts.hasNext())
{
builder.append(',');
}
@@ -277,12 +277,13 @@
requests.add(createConfigRequest(jvmRoute, service.findConnectors(), nodeConfig,
balancerConfig));
ResetRequestSource.EngineStatus engineStatus = response.get(jvmRoute);
- Set<String> contexts = new HashSet<String>();
-
+ Map<String, ResetRequestSource.Status> contexts = Collections.emptyMap();
if (engineStatus != null)
{
- contexts.addAll(engineStatus.getContexts().keySet());
+ contexts = engineStatus.getContexts();
}
+
+ Set<String> oldContexts = new HashSet<String>(contexts.keySet());
for (Container child: engine.findChildren())
{
@@ -291,22 +292,22 @@
Context context = (Context) container;
String path = context.getPath();
- contexts.remove(path);
+ oldContexts.remove(path);
- ResetRequestSource.Status status = (engineStatus != null) ?
engineStatus.getContexts().get(path) : null;
+ ResetRequestSource.Status status = contexts.get(path);
if (Utils.isContextStarted(context))
{
if (status != ResetRequestSource.Status.ENABLED)
{
- requests.add(createContextRequest(MCMPRequestType.ENABLE_APP,
jvmRoute, Utils.getHosts(context), path));
+ requests.add(createContextRequest(MCMPRequestType.ENABLE_APP,
jvmRoute, Utils.getAliases(context), path));
}
}
else
{
if (status == ResetRequestSource.Status.ENABLED)
{
- requests.add(createContextRequest(MCMPRequestType.STOP_APP,
jvmRoute, Utils.getHosts(context), path));
+ requests.add(createContextRequest(MCMPRequestType.STOP_APP,
jvmRoute, Utils.getAliases(context), path));
}
}
}
@@ -315,20 +316,21 @@
// Send REMOVE-APP requests for contexts that don't exist
if (engineStatus != null)
{
- Set<String> aliases = engineStatus.getAliases();
-
- for (String context: contexts)
+ if (oldContexts.size() == contexts.size())
{
- requests.add(createContextRequest(MCMPRequestType.REMOVE_APP, jvmRoute,
aliases, context));
+ requests.add(createEngineRequest(MCMPRequestType.REMOVE_APP, jvmRoute));
}
+ else
+ {
+ Set<String> aliases = engineStatus.getAliases();
+
+ for (String context: contexts.keySet())
+ {
+ requests.add(createContextRequest(MCMPRequestType.REMOVE_APP, jvmRoute,
aliases, context));
+ }
+ }
}
}
-
- // Add REMOVE-APP * for non-existing engines
- for (String jvmRoute: jvmRoutes)
- {
- requests.add(createEngineRequest(MCMPRequestType.REMOVE_APP, jvmRoute));
- }
return requests;
}