[
https://jira.jboss.org/jira/browse/JGRP-1042?page=com.atlassian.jira.plug...
]
Richard Achmatowicz commented on JGRP-1042:
-------------------------------------------
How about something like this in JChannel.startStack():
try {
prot_stack.startStack(cluster_name, local_addr); // calls start() in all
protocols, from top to bottom
}
catch(Throwable e) {
if (log.isDebugEnabled()) {
// print the stack trace of the exception and its cause
log.debug("failed to start protocol stack\n" +
e.printStackTrace()) ;
}
throw new ChannelException("failed to start protocol stack", e);
}
Provide better reporting of ChannelExceptions when debugging
------------------------------------------------------------
Key: JGRP-1042
URL:
https://jira.jboss.org/jira/browse/JGRP-1042
Project: JGroups
Issue Type: Feature Request
Reporter: Richard Achmatowicz
Assignee: Richard Achmatowicz
Priority: Minor
I spent a lot of time recently trying to track down some testsuite failures, where tests
were failing with:
"failed to start protocol stack"
org.jgroups.ChannelException at org.jgroups.JChannel.startStack(JChannel.java:1766) at
org.jgroups.JChannel.connect(JChannel.java:407) at
org.jgroups.JChannel.connect(JChannel.java:382) at
org.jgroups.tests.ChannelTest.testBasicOperations(ChannelTest.java:27) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at
java.lang.reflect.Method.invoke(Method.java:597) at
org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580) at
org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:49) at
org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:40) at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
java.util.concurrent.FutureTask.run(FutureTask.java:138) at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at
java.lang.Thread.run(Thread.java:619)
Turning on DEBUG level logging didn't help. I finally tracked the error down to an
UnknownHostException which was getting raised in UDP.createSockets() during a call to
InetAddress.getByname(). This checked exception was then passing through the following
methods:
UDP.createSockets() throws Exception ;
UDP.start() throws Exception ;
ProtocolStack.startStack() throws Exception ;
JChannel.startStack() throws ChannelException ;
There are a lot of potential exceptions which can occur when starting a stack, and these
are getting masked to a large extent. It makes debugging stack startup problems painful,
as the only way to get more information about the problem is to write code to unpack the
ChannelException and print out its cause.
I'd like to add some simple logging statements to the exception handler in
JChannel.startStack() to make debugging the startup of stacks easier.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira