You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Trevor Robinson (JIRA)" <ji...@apache.org> on 2013/02/21 22:14:13 UTC

[jira] [Updated] (MAPREDUCE-5020) Compile failure with JDK8

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

Trevor Robinson updated MAPREDUCE-5020:
---------------------------------------

    Description: 
Compiling {{org/apache/hadoop/mapreduce/lib/partition/InputSampler.java}} fails with the Java 8 preview compiler due to its stricter enforcement of JLS 15.12.2.6 (for [Java 5|http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.12.2.6] or [Java 7|http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.6]), which demands that methods applicable via unchecked conversion have their return type erased:

{noformat}
[ERROR] hadoop-common/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/partition/InputSampler.java:[320,35] error: incompatible types: Object[] cannot be converted to K[]
{noformat}

{code}
  @SuppressWarnings("unchecked") // getInputFormat, getOutputKeyComparator
  public static <K,V> void writePartitionFile(Job job, Sampler<K,V> sampler) 
      throws IOException, ClassNotFoundException, InterruptedException {
    Configuration conf = job.getConfiguration();
    final InputFormat inf = 
        ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
    int numPartitions = job.getNumReduceTasks();
    K[] samples = sampler.getSample(inf, job); // returns Object[] according to JLS
{code}

  was:
Compiling `org/apache/hadoop/mapreduce/lib/partition/InputSampler.java` fails with the Java 8 preview compiler due to its stricter enforcement of JLS 15.12.2.6 (for [Java 5|http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.12.2.6] or [Java 7|http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.6]), which demands that methods applicable via unchecked conversion have their return type erased:

{noformat}
[ERROR] hadoop-common/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/partition/InputSampler.java:[320,35] error: incompatible types: Object[] cannot be converted to K[]
{noformat}

{code}
  @SuppressWarnings("unchecked") // getInputFormat, getOutputKeyComparator
  public static <K,V> void writePartitionFile(Job job, Sampler<K,V> sampler) 
      throws IOException, ClassNotFoundException, InterruptedException {
    Configuration conf = job.getConfiguration();
    final InputFormat inf = 
        ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
    int numPartitions = job.getNumReduceTasks();
    K[] samples = sampler.getSample(inf, job); // returns Object[] according to JLS
{code}

    
> Compile failure with JDK8
> -------------------------
>
>                 Key: MAPREDUCE-5020
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5020
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 2.0.3-alpha
>         Environment: java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
> Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)
>            Reporter: Trevor Robinson
>              Labels: jdk8
>
> Compiling {{org/apache/hadoop/mapreduce/lib/partition/InputSampler.java}} fails with the Java 8 preview compiler due to its stricter enforcement of JLS 15.12.2.6 (for [Java 5|http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.12.2.6] or [Java 7|http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.6]), which demands that methods applicable via unchecked conversion have their return type erased:
> {noformat}
> [ERROR] hadoop-common/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/partition/InputSampler.java:[320,35] error: incompatible types: Object[] cannot be converted to K[]
> {noformat}
> {code}
>   @SuppressWarnings("unchecked") // getInputFormat, getOutputKeyComparator
>   public static <K,V> void writePartitionFile(Job job, Sampler<K,V> sampler) 
>       throws IOException, ClassNotFoundException, InterruptedException {
>     Configuration conf = job.getConfiguration();
>     final InputFormat inf = 
>         ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
>     int numPartitions = job.getNumReduceTasks();
>     K[] samples = sampler.getSample(inf, job); // returns Object[] according to JLS
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira