[jboss-cvs] JBossAS SVN: r76218 - in trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp: impl and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 25 00:40:04 EDT 2008
Author: bstansberry at jboss.com
Date: 2008-07-25 00:40:03 -0400 (Fri, 25 Jul 2008)
New Revision: 76218
Modified:
trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/MCMPUtils.java
trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/impl/DefaultMCMPHandler.java
Log:
[JBAS-5659] Use INFO to reestablish ERROR state proxy; don't expose internal, non-serializable Proxy class via getProxyStates
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/MCMPUtils.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/MCMPUtils.java 2008-07-25 04:38:19 UTC (rev 76217)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/MCMPUtils.java 2008-07-25 04:40:03 UTC (rev 76218)
@@ -24,6 +24,7 @@
import java.net.InetAddress;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -47,6 +48,8 @@
*/
public class MCMPUtils
{
+ private static final MCMPRequest INFO = new MCMPRequest(MCMPRequestType.INFO, false, new HashMap<String, String>());
+
public static MCMPRequest createConfigRequest(Engine engine, NodeConfiguration nodeConfig, BalancerConfiguration balancerConfig)
{
Connector connector = Utils.findProxyConnector(engine.getService().findConnectors());
@@ -203,6 +206,11 @@
return requests;
}
+ public static MCMPRequest getInfoRequest()
+ {
+ return INFO;
+ }
+
private static Map<String, String> createEngineParameters(Engine engine)
{
Map<String, String> parameters = new HashMap<String, String>();
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/impl/DefaultMCMPHandler.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/impl/DefaultMCMPHandler.java 2008-07-25 04:38:19 UTC (rev 76217)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/modcluster/mcmp/impl/DefaultMCMPHandler.java 2008-07-25 04:40:03 UTC (rev 76218)
@@ -27,12 +27,12 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.io.Serializable;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -41,6 +41,8 @@
import java.util.Set;
import java.util.StringTokenizer;
+import net.jcip.annotations.Immutable;
+
import org.apache.catalina.util.StringManager;
import org.apache.tomcat.util.buf.CharChunk;
import org.apache.tomcat.util.buf.UEncoder;
@@ -56,6 +58,7 @@
import org.jboss.web.tomcat.service.modcluster.mcmp.MCMPServerState;
import org.jboss.web.tomcat.service.modcluster.mcmp.MCMPUtils;
import org.jboss.web.tomcat.service.modcluster.mcmp.ResetRequestSource;
+import org.jboss.web.tomcat.service.modcluster.mcmp.MCMPServerState.State;
/**
* Default implementation of {@link MCMPHandler}.
@@ -339,7 +342,7 @@
Set<MCMPServerState> result = new HashSet<MCMPServerState>(local.length);
for (Proxy proxy : local)
{
- result.add(proxy);
+ result.add(new MCMPServerStateImpl(proxy));
}
return result;
}
@@ -350,7 +353,7 @@
Proxy[] local = proxies;
for (Proxy proxy : local)
{
- if (proxy.getState() != Proxy.State.OK)
+ if (proxy.getState() != MCMPServerState.State.OK)
{
ok = false;
break;
@@ -366,7 +369,7 @@
{
synchronized (proxy)
{
- if (proxy.getState() == Proxy.State.OK)
+ if (proxy.getState() == State.OK)
{
proxy.setState(Proxy.State.ERROR);
}
@@ -513,14 +516,20 @@
{
if (proxy.getState() == Proxy.State.ERROR) {
proxy.setState(Proxy.State.OK);
- if (resetRequests == null)
- {
- resetRequests = this.resetRequestSource.getResetRequests();
- }
- for (MCMPRequest request : resetRequests)
+ sendRequest(MCMPUtils.getInfoRequest());
+
+ if (proxy.getState() == Proxy.State.OK)
{
- sendRequest(request, proxy);
+ if (resetRequests == null)
+ {
+ resetRequests = this.resetRequestSource.getResetRequests();
+ }
+
+ for (MCMPRequest request : resetRequests)
+ {
+ sendRequest(request, proxy);
+ }
}
}
}
@@ -992,5 +1001,83 @@
connection = null;
}
}
+
+ @Immutable
+ private static class MCMPServerStateImpl implements MCMPServerState, Serializable
+ {
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 5219680414337319908L;
+
+ private final State state;
+ private final InetAddress address;
+ private final int port;
+ private final boolean established;
+
+ private MCMPServerStateImpl(MCMPServerState source)
+ {
+ this.state = source.getState();
+ this.address = source.getAddress();
+ this.port = source.getPort();
+ this.established = source.isEstablished();
+ }
+
+ public State getState()
+ {
+ return state;
+ }
+ public InetAddress getAddress()
+ {
+ return address;
+ }
+
+ public int getPort()
+ {
+ return port;
+ }
+
+ public boolean isEstablished()
+ {
+ return established;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+
+ if (obj instanceof MCMPServerStateImpl)
+ {
+ MCMPServerStateImpl other = (MCMPServerStateImpl) obj;
+ return (this.port == other.port && this.address.equals(other.address)
+ && this.state == other.state && this.established == other.established);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = 17;
+ result += 23 * (this.address == null ? 0 : this.address.hashCode());
+ result += 23 * this.port;
+ result += 23 * this.state.hashCode();
+ result += 23 * (this.established ? 0 : 1);
+ return result;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder(getClass().getSimpleName());
+ sb.append("{address=").append(address)
+ .append(",port=").append(port)
+ .append(",state=").append(state)
+ .append(",established").append(established).append("}");
+ return sb.toString();
+ }
+
+ }
+
}
More information about the jboss-cvs-commits
mailing list