Uploaded image for project: 'Avro'
  1. Avro
  2. AVRO-1240

SpecificDataumReader.next() can return a GenericData.Record resulting in a ClassCastException

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.3
    • Fix Version/s: 1.7.4
    • Component/s: java
    • Labels:
      None

      Description

      The following reasonable code:

          DatumReader<Test> reader = new SpecificDatumReader<Test>(Test.class); 
          DataFileReader<Test> dataFileReader = new DataFileReader<Test>(file, reader); 
          Test datum = null;
          while(dataFileReader.hasNext()) { 
            datum = dataFileReader.next(datum); 
            System.out.println(datum); 
          }
      

      Can result in a runtime exception:

      $ java -cp avro-1.7.3.jar:$(hadoop classpath) org.apache.hadoop.util.RunJar target/avro-example-1.0-jar-with-dependencies.jar Sample target/test-file 
      Exception in thread "main" java.lang.ClassCastException: org.apache.avro.generic.GenericData$Record cannot be cast to Test
      	at Sample.main(Sample.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.apache.hadoop.util.RunJar.main(RunJar.java:208)
      

      when the jar containing the specific class (Test in my example) is loaded from a different classloader than the avro jar itself. This occurs when run via the hadoop jar command but could occur in web containers or other locations as well.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                cutting Doug Cutting
                Reporter:
                brocknoland Brock Noland
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: