mirror of https://github.com/apache/activemq.git
soreuse addr on rmi connector and enable some debug logging to track down hudson jmx related intermittent failures
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@833376 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
46a7f9eeab
commit
f1fa8f911d
|
@ -19,8 +19,10 @@ package org.apache.activemq.broker.jmx;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.ServerSocket;
|
||||||
import java.rmi.registry.LocateRegistry;
|
import java.rmi.registry.LocateRegistry;
|
||||||
import java.rmi.registry.Registry;
|
import java.rmi.registry.Registry;
|
||||||
|
import java.rmi.server.RMIServerSocketFactory;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -89,17 +91,20 @@ public class ManagementContext implements Service {
|
||||||
try {
|
try {
|
||||||
getMBeanServer().invoke(namingServiceObjectName, "start", null, null);
|
getMBeanServer().invoke(namingServiceObjectName, "start", null, null);
|
||||||
} catch (Throwable ignore) {
|
} catch (Throwable ignore) {
|
||||||
|
LOG.debug("ignored error on start invocation", ignore);
|
||||||
}
|
}
|
||||||
Thread t = new Thread("JMX connector") {
|
Thread t = new Thread("JMX connector") {
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
JMXConnectorServer server = connectorServer;
|
JMXConnectorServer server = connectorServer;
|
||||||
if (started.get() && server != null) {
|
if (started.get() && server != null) {
|
||||||
|
LOG.debug("Starting JMX JMXConnectorServer...");
|
||||||
server.start();
|
server.start();
|
||||||
LOG.info("JMX consoles can connect to " + server.getAddress());
|
LOG.info("JMX consoles can connect to " + server.getAddress());
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("Failed to start jmx connector: " + e.getMessage());
|
LOG.warn("Failed to start jmx connector: " + e.getMessage());
|
||||||
|
LOG.debug("Reason for failed jms connector start", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -403,9 +408,15 @@ public class ManagementContext implements Service {
|
||||||
private void createConnector(MBeanServer mbeanServer) throws MalformedObjectNameException, MalformedURLException, IOException {
|
private void createConnector(MBeanServer mbeanServer) throws MalformedObjectNameException, MalformedURLException, IOException {
|
||||||
// Create the NamingService, needed by JSR 160
|
// Create the NamingService, needed by JSR 160
|
||||||
try {
|
try {
|
||||||
if (registry == null) {
|
if (registry == null) {
|
||||||
registry = LocateRegistry.createRegistry(connectorPort);
|
registry = LocateRegistry.createRegistry(connectorPort, null, new RMIServerSocketFactory() {
|
||||||
}
|
public ServerSocket createServerSocket(int port)
|
||||||
|
throws IOException {
|
||||||
|
ServerSocket result = new ServerSocket(port);
|
||||||
|
result.setReuseAddress(true);
|
||||||
|
return result;
|
||||||
|
}});
|
||||||
|
}
|
||||||
namingServiceObjectName = ObjectName.getInstance("naming:type=rmiregistry");
|
namingServiceObjectName = ObjectName.getInstance("naming:type=rmiregistry");
|
||||||
// Do not use the createMBean as the mx4j jar may not be in the
|
// Do not use the createMBean as the mx4j jar may not be in the
|
||||||
// same class loader than the server
|
// same class loader than the server
|
||||||
|
|
|
@ -25,7 +25,6 @@ import junit.framework.TestCase;
|
||||||
import org.apache.activemq.broker.BrokerPlugin;
|
import org.apache.activemq.broker.BrokerPlugin;
|
||||||
import org.apache.activemq.broker.BrokerPluginSupport;
|
import org.apache.activemq.broker.BrokerPluginSupport;
|
||||||
import org.apache.activemq.broker.BrokerService;
|
import org.apache.activemq.broker.BrokerService;
|
||||||
import org.apache.activemq.util.SocketProxy;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
@ -89,5 +88,7 @@ public class MasterSlaveSlaveDieTest extends TestCase {
|
||||||
LOG.info("checking master still alive");
|
LOG.info("checking master still alive");
|
||||||
assertTrue("master is still alive", master.isStarted());
|
assertTrue("master is still alive", master.isStarted());
|
||||||
assertFalse("plugin was not yet stopped", pluginStopped.get());
|
assertFalse("plugin was not yet stopped", pluginStopped.get());
|
||||||
|
master.stop();
|
||||||
|
master.waitUntilStopped();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -22,6 +22,9 @@ log4j.rootLogger=INFO, out, stdout
|
||||||
|
|
||||||
#log4j.logger.org.apache.activemq=DEBUG
|
#log4j.logger.org.apache.activemq=DEBUG
|
||||||
|
|
||||||
|
# get to the bottom of jmx related intermittent failures
|
||||||
|
log4j.logger.org.apache.activemq.broker.jmx.ManagementContext=DEBUG
|
||||||
|
|
||||||
# CONSOLE appender not used by default
|
# CONSOLE appender not used by default
|
||||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
Loading…
Reference in New Issue