hadoop-mapreduce-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Caspole (JIRA)" <j...@apache.org>
Subject [jira] [Created] (MAPREDUCE-2629) Class loading quirk prevents inner class method compilation
Date Tue, 28 Jun 2011 22:07:28 GMT
Class loading quirk prevents inner class method compilation

                 Key: MAPREDUCE-2629
                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-2629
             Project: Hadoop Map/Reduce
          Issue Type: Improvement
          Components: task
    Affects Versions: 0.21.0, 0.22.0
            Reporter: Eric Caspole
            Priority: Minor

While profiling jobs like terasort and gridmix, I noticed that a
method "org.apache.hadoop.mapreduce.task.ReduceContextImpl.access
$000" is near the top. It turns out that this is because the
ReduceContextImpl class has a member backupStore which is accessed
from an inner class ReduceContextImpl$ValueIterator. Due to the way
synthetic accessor methods work, every access of backupStore results
in a call to access$000 to the outer class. For some portion of the
run, backupStore is null and the BackupStore class has never been
loaded by the reducer.

Due to the way the Hotspot JVM inliner works, by default it will not
inline a short method where the class of of the return value object
is unloaded - if you use a debug JVM with -XX:+PrintCompilation you
will see a failure reason message like "unloaded signature classes."
This causes every call to ReduceContextImpl.access$000 to be executed
in the interpreter for the handful of bytecodes to return the null

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message