You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Nigel Daley (JIRA)" <ji...@apache.org> on 2007/10/29 06:09:50 UTC

[jira] Resolved: (HADOOP-2108) NullPointerException in JVMMetrics for OOM killed task

     [ https://issues.apache.org/jira/browse/HADOOP-2108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nigel Daley resolved HADOOP-2108.
---------------------------------

       Resolution: Duplicate
    Fix Version/s: 0.14.3

Duplicate of HADOOP-2036 that was fixed in 0.14.3

> NullPointerException in JVMMetrics for OOM killed task
> ------------------------------------------------------
>
>                 Key: HADOOP-2108
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2108
>             Project: Hadoop
>          Issue Type: Bug
>          Components: metrics
>    Affects Versions: 0.14.2
>         Environment: Centos5 jdk1.6.0_02
>            Reporter: Richard Lee
>            Priority: Minor
>             Fix For: 0.14.3
>
>
> I had a reduce task run out of memory and die in such a way that JVMMetrics.doThreadUpdates() throws a NullPointerException.
> The aparent cause seems to be that the call to threadMXBean.getThreadInfo() on JVMMetrics:119 returns an array of ThreadInfo whose elements may be null.
> Here's a relevant quote from the javadoc:
> This method returns an array of the ThreadInfo objects,
>      * each is the thread information about the thread with the same index
>      * as in the ids array.
>      * If a thread of the given ID is not alive or does not exist,
>      * null will be set in the corresponding element 
>      * in the returned array.  A thread is alive if 
>      * it has been started and has not yet died.
> My stacktrace looks like this:
> java.lang.NullPointerException
> 	at org.apache.hadoop.metrics.jvm.JvmMetrics.doThreadUpdates(JvmMetrics.java:129)
> 	at org.apache.hadoop.metrics.jvm.JvmMetrics.doUpdates(JvmMetrics.java:79)
> 	at org.apache.hadoop.metrics.spi.AbstractMetricsContext.timerEvent(AbstractMetricsContext.java:284)
> 	at org.apache.hadoop.metrics.spi.AbstractMetricsContext.access$000(AbstractMetricsContext.java:50)
> 	at org.apache.hadoop.metrics.spi.AbstractMetricsContext$1.run(AbstractMetricsContext.java:249)
> 	at java.util.TimerThread.mainLoop(Timer.java:512)
> 	at java.util.TimerThread.run(Timer.java:462)
> On line 129,  there's an attempt to dereference the potientially null threadInfo value to get its current state.
> The naive solution here is to check for null and count null values as "terminated"... but it seems clear that a thread state of TERMINATED and a null ThreadInfo value are distinct cases and may need special treatment.
> Guessing that this is a "minor" issue because it seems more cosmetic than mission critical.  I'm not sure what the upstream effects are of this method throwing the NPE, so i didn't set it to "trivial".

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.