[jboss-cvs] JBossAS SVN: r60537 - branches/Branch_4_2/system/src/main/org/jboss/system/server.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Feb 14 10:22:19 EST 2007
Author: dimitris at jboss.org
Date: 2007-02-14 10:22:19 -0500 (Wed, 14 Feb 2007)
New Revision: 60537
Modified:
branches/Branch_4_2/system/src/main/org/jboss/system/server/ServerInfo.java
Log:
JBAS-3838, avoid NPE at getThreadInfo
Modified: branches/Branch_4_2/system/src/main/org/jboss/system/server/ServerInfo.java
===================================================================
--- branches/Branch_4_2/system/src/main/org/jboss/system/server/ServerInfo.java 2007-02-14 14:56:16 UTC (rev 60536)
+++ branches/Branch_4_2/system/src/main/org/jboss/system/server/ServerInfo.java 2007-02-14 15:22:19 UTC (rev 60537)
@@ -569,8 +569,11 @@
Long id = new Long(threads[i]);
Long cpuTime = (Long) getThreadCpuTime.invoke(threadMXBean, new Object[] { id });
Object threadInfo = getThreadInfo.invoke(threadMXBean, new Object[] { id, ZERO });
- String name = (String) getThreadName.invoke(threadInfo, NO_PARAMS);
- result.add(new ThreadCPU(name, cpuTime.longValue()));
+ if (threadInfo != null)
+ {
+ String name = (String) getThreadName.invoke(threadInfo, NO_PARAMS);
+ result.add(new ThreadCPU(name, cpuTime.longValue()));
+ }
}
return result;
}
@@ -653,31 +656,40 @@
{
// get the threadId
Long threadId = (Long)getThreadId.invoke(thread, NO_PARAMS);
+ sbuf.append(", threadId:").append(threadId);
+
// get the ThreadInfo object for that threadId, max StackTraceElement depth
Object threadInfo = getThreadInfo.invoke(threadMXBean,
new Object[] { threadId, new Integer(Integer.MAX_VALUE) });
- // get misc info from ThreadInfo
- Object threadState = getThreadState.invoke(threadInfo, NO_PARAMS); // enum
- String lockName = (String)getLockName.invoke(threadInfo, NO_PARAMS);
- //Long lockOwnerId = (Long)getLockOwnerId.invoke(threadInfo, NO_PARAMS);
- //String lockOwnerName = (String)getLockOwnerName.invoke(threadInfo, NO_PARAMS);
- Object[] stackTrace = (Object[])getStackTrace.invoke(threadInfo, NO_PARAMS);
-
- sbuf.append(", threadId:").append(threadId);
- sbuf.append(", threadState:").append(threadState);
- sbuf.append(", lockName:").append(lockName);
- //sbuf.append(", lockOwnerId:").append(lockOwnerId);
- //sbuf.append(", lockOwnerName:").append(lockOwnerName);
- sbuf.append("<br>");
- if (stackTrace.length > 0)
+ // JBAS-3838, thread might not be alive
+ if (threadInfo != null)
{
- sbuf.append("<blockquote>");
- for (int i = 0; i < stackTrace.length; i++)
+ // get misc info from ThreadInfo
+ Object threadState = getThreadState.invoke(threadInfo, NO_PARAMS); // enum
+ String lockName = (String)getLockName.invoke(threadInfo, NO_PARAMS);
+ //Long lockOwnerId = (Long)getLockOwnerId.invoke(threadInfo, NO_PARAMS);
+ //String lockOwnerName = (String)getLockOwnerName.invoke(threadInfo, NO_PARAMS);
+ Object[] stackTrace = (Object[])getStackTrace.invoke(threadInfo, NO_PARAMS);
+
+ sbuf.append(", threadState:").append(threadState);
+ sbuf.append(", lockName:").append(lockName);
+ //sbuf.append(", lockOwnerId:").append(lockOwnerId);
+ //sbuf.append(", lockOwnerName:").append(lockOwnerName);
+ sbuf.append("<br>");
+ if (stackTrace.length > 0)
{
- sbuf.append(stackTrace[i]).append("<br>");
+ sbuf.append("<blockquote>");
+ for (int i = 0; i < stackTrace.length; i++)
+ {
+ sbuf.append(stackTrace[i]).append("<br>");
+ }
+ sbuf.append("</blockquote>");
}
- sbuf.append("</blockquote>");
}
+ else
+ {
+ sbuf.append("<br>");
+ }
}
catch (Exception ignore)
{
More information about the jboss-cvs-commits
mailing list